web-dev-qa-db-ja.com

javaでExcelシートを読み取るときのNoSuchFieldError

Apache POI XSSFを使用してワークブックを作成するための簡単なガイドに従いました。同じガイドに従って、Excelシートを書き込むことができましたが、Excelシートから読み取ろうとすると、コードの後に​​エラーが表示されます。

コード:

try {
    FileInputStream file = new FileInputStream(new File("howtodoinjava_demo.xlsx"));

    // Create Workbook instance holding reference to .xlsx file
    XSSFWorkbook workbook = new XSSFWorkbook(file);

    // Get first/desired sheet from the workbook
    XSSFSheet sheet = workbook.getSheetAt(0);

    // Iterate through each rows one by one
    Iterator<Row> rowIterator = sheet.iterator();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();
        // For each row, iterate through all the columns
        Iterator<Cell> cellIterator = row.cellIterator();

        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            // Check the cell type and format accordingly
            switch (cell.getCellType()) {
            case Cell.CELL_TYPE_NUMERIC:
                System.out.print(cell.getNumericCellValue() + "t");
                break;
            case Cell.CELL_TYPE_STRING:
                System.out.print(cell.getStringCellValue() + "t");
                break;
            }
        }
        System.out.println("");
    }
    file.close();
} catch (Exception e) {
    e.printStackTrace();
}

エラー出力:

スレッド「メイン」での例外Java.lang.NoSuchFieldError:RAW.XML_FILE_HEADER at org.Apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.Java:179)at org.Apache.poi.openxml4j.opc.internal.ZipHelper .openZipStream(ZipHelper.Java:228)at org.Apache.poi.openxml4j.opc.ZipPackage。(ZipPackage.Java:93)at org.Apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.Java:294) org.Apache.poi.util.PackageHelper.open(PackageHelper.Java:37)at org.Apache.poi.xssf.usermodel.XSSFWorkbook。(XSSFWorkbook.Java:273)at com.wtolliver.spring.test.ReadExcel。 readExcel(ReadExcel.Java:18)at com.wtolliver.spring.test.App.main(App.Java:17)

7

少し見回した後。私は Apache POIのドキュメント を閲覧し、これが定数の1つであることを確認しました(それが本当に何を意味するのかはわかりません)。

しかし、最終的に、私が使用したチュートリアルはすべて2014年以前のものであることに気付きました。

そのため、Apache-poipoi-ooxmlの両方の依存関係について、Maven POMをバージョン3.11に変更しました。

現在は機能しています。

11

異なる定数で同じエラーが発生しました:

スレッド「メイン」の例外Java.lang.NoSuchFieldErrorRETURN_NULL_AND_BLANK

グーグルでたくさんの答えはありません。私はApacheを使っていましたpoi-ooxmlバージョン3.11。後でバージョン3.17に変更しました。その後、問題なく動作しました。

これが誰かに役立つことを願っています。

2
Kannan Msk

同じエラーが発生しました。XSSFWorkbook宣言をHSSFWorkbookに変更してみてください。それは私のために働いた。

0
Murali

次のエラー「Java.lang.NoSuchFieldError:RETURN_NULL_AND_BLANK」の場合

次のタスクを実行してください:私の場合、Apache POI 3。**を最新バージョンにアップグレードします以前にApache poi 3.09を使用していた次のことを行った後、libを最新バージョン、つまり3.12にアップグレードし、その作業を行いました!!

次の手順を実行すると、コードが実行されますが、エラーが同じであることを確認してください。

0
Tanay Sinha