回答:
OOXMLを機能させるには、POI jarとは別にパッケージ化されたPOI-OOXML jarが必要です。
次の場所からPOI-OOXML jarをダウンロードします-
http://repo1.maven.org/maven2/org/apache/poi/poi-ooxml/3.11/poi-ooxml-3.11.jar
Maven2の場合、以下の依存関係を追加します-
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
OOXMLファイル形式のクラス(.xlsxのXSSFなど)は、別のJarファイルにあります。プロジェクトにpoi-ooxml jarとその依存関係を含める必要があります
こちらのPOI Webサイトで、すべてのコンポーネントとその依存関係のリストを取得できます。
おそらくあなたがしたいことは、3.11バイナリパッケージをダウンロードし、poi-ooxml
そこからjarを取得し、ooxml-lib
ディレクトリ内の依存関係を取得することです。これらをプロジェクトにインポートすると、ソートされます。
あるいは、Mavenを使用している場合は、ここに依存したいアーティファクトのリストを表示できますが、次のようにする必要があります。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
poi-ooxml maven依存関係は、メインのPOI jarと依存関係を自動的に取り込みます。非スプレッドシート形式で作業したい場合poi-scratchpad
は、POIコンポーネントのページで詳しく説明されているように、アーティファクトにも依存する必要があります。
アプリ「build.gradle」に以下の内容を追加しました
implementation 'org.apache.poi:poi:4.0.0'
implementation 'org.apache.poi:poi-ooxml:4.0.0'
問題:「org.apache.poi.xssf.usermodel.XSSFWorkbook」クラスのインポート中に、Eclipseでエラーが表示されます。
解決策:この問題を解決するには、このmaven依存関係を使用します。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
-ハリクリシュナニーラ
1)POIフォルダーからすべてのJARをインポート2)POIフォルダーのサブディレクトリであるooxmlフォルダーからすべてのJARをインポート3)POIフォルダーのサブディレクトリであるlibフォルダーからすべてのJARをインポート
String fileName = "C:/File raw.xlsx";
File file = new File(fileName);
FileInputStream fileInputStream;
Workbook workbook = null;
Sheet sheet;
Iterator<Row> rowIterator;
try {
fileInputStream = new FileInputStream(file);
String fileExtension = fileName.substring(fileName.indexOf("."));
System.out.println(fileExtension);
if(fileExtension.equals(".xls")){
workbook = new HSSFWorkbook(new POIFSFileSystem(fileInputStream));
}
else if(fileExtension.equals(".xlsx")){
workbook = new XSSFWorkbook(fileInputStream);
}
else {
System.out.println("Wrong File Type");
}
FormulaEvaluator evaluator workbook.getCreationHelper().createFormulaEvaluator();
sheet = workbook.getSheetAt(0);
rowIterator = sheet.iterator();
while(rowIterator.hasNext()){
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()){
Cell cell = cellIterator.next();
//Check the cell type after evaluating formulae
//If it is formula cell, it will be evaluated otherwise no change will happen
switch (evaluator.evaluateInCell(cell).getCellType()){
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + " ");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + " ");
break;
case Cell.CELL_TYPE_FORMULA:
Not again
break;
case Cell.CELL_TYPE_BLANK:
break;
}
}
System.out.println("\n");
}
//System.out.println(sheet);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
私の実装には次のファイルが必要でした。
(正直なところ、すべてが必要かどうかは完全にはわかりません...)このようにパッケージ化されているため、少し混乱しています。それらを自分の「lib」フォルダに手動で配置し、参照を追加する必要がありました...
Mavenは常に必要以上にダウンロードするように見えるので、常にlibaries / dllとそのようなものを手動で配置します。