Apache POIにXSSFをインポートできない


121

Apache POIのバージョン3.7を参照していますが、実行すると「解決できません」というエラーが表示されます。

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

POIを参照する他のインポート文では、次のようなエラーは発生しません

import org.apache.poi.ss.usermodel.*;

何か案は??


私は同じ問題を抱えていました、何らかの理由でxssfがパックされていないpoi-3.whatever.jarファイルに根ざしているようです
Redstoner氏

回答:


197

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>

これは私が必要としたものです。私(バージョン3.11)では、追加のjarを追加する必要がありました:poit-ooxml-3.11-20141221.jar。それらの間にネクタイがないことを私は知りませんでした。回答プシュカル+1をありがとう。
クリントL

32

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コンポーネントのページで詳しく説明されているように、アーティファクトにも依存する必要があります。


10

アプリ「build.gradle」に以下の内容を追加しました

implementation 'org.apache.poi:poi:4.0.0'
implementation 'org.apache.poi:poi-ooxml:4.0.0'

それは本当に助けになった
Abror Esonaliyev

8

Mavenを使用する場合:

poi => ArtifactIdのpoi-ooxml

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.12</version>
    </dependency>

3.12ベータ版ではなくPOI 3.12 final()を使用することをお勧めします
Gagravarr

6

問題:「org.apache.poi.xssf.usermodel.XSSFWorkbook」クラスのインポート中に、Eclipseでエラーが表示されます。

解決策:この問題を解決するには、このmaven依存関係を使用します。

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.15</version>
</dependency>

-ハリクリシュナニーラ


2

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();
}​

行がインポートされていません... jarファイルのリンクを共有できますか
デモ

1

同じ問題が発生したため、poi-3.17.jarファイルを調べましたが、内部にxssfパッケージがありませんでした。

次に、他のファイルを調べて、xssf int poi-ooxml-3.17.jarを見つけました

したがって、解決策は追加することです

poi-ooxml-3.17.jar

それはそれを機能させるように見えるので、あなたのプロジェクトに(少なくとも私にとって)


0

環境について説明していません。とにかく、Apache poiライブラリをダウンロードする必要があります。Eclipseを使用している場合は、ルートプロジェクトを右クリックして、プロパティとJavaビルドパスに外部jarを追加し、プロジェクトにこれらのライブラリをインポートします。

xmlbeans-2.6.0; poi-ooxml-schemas- ...; poi-ooxml- ...; poi- ....;


0

私の実装には次のファイルが必要でした。

  • poi-ooxml-schemas-3.14.20160307.jar
  • commons-codec-1.10.jar(これは、Apacheから取得したzipファイルの「lib」フォルダーにありました)
  • curveapi-1.03.jar(「ooxml-lib」フォルダー内)
  • poi-3.14-20160307.jar
  • poi-ooxml-3.14-20160307.jar
  • xmlbeans-2.6.0.jar(「ooxml-lib」フォルダー内)

(正直なところ、すべてが必要かどうかは完全にはわかりません...)このようにパッケージ化されているため、少し混乱しています。それらを自分の「lib」フォルダに手動で配置し、参照を追加する必要がありました...

Mavenは常に必要以上にダウンロードするように見えるので、常にlibaries / dllとそのようなものを手動で配置します。


Apache POI は、どのjarが何のために必要かを説明する便利なページを提供し、必要なものはすべてバイナリダウンロードで提供されるので、混乱したり謎だったりする必要はありません。
Gagravarr 2016年

このページは、Mavenを使用する場合に便利ですが、依存関係を手動で追加することをお勧めします。このページにはすべてが個別にリストされているわけではありません。ビルド時には目立たないものもありますが、実行時に例外を確認することで見つけることができます。私の実装では、XLSおよびXLSXファイルをjtableにインポートします。上記はそれのために必要とされたすべてであるように思われました。
pcalkins 2016年

1
ここにリストされているものはすべて、バイナリダウンロードで出荷されます。コンポーネントに必要なjarとjarに必要な依存関係の
両方

0

複数のことを試した後、実際に機能したのは次のとおりです。1。「poi」と「poi-ooxml」を手動でダウンロード2.これらのd / w jarを「Maven Dependencies」に追加

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.