在java中读取Excel工作表时出现NoSuchFieldError

时间:2016-06-03 15:34:54

标签: java xssf nosuchfieldexception

我遵循了使用Apache POI XSSF构建工作簿的简单指南。按照相同的指南,我能够写一个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();
}

错误输出:

  

线程“main”java.lang.NoSuchFieldError中的异常:   RAW_XML_FILE_HEADER在   org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:179)     在   org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:228)     在org.apache.poi.openxml4j.opc.ZipPackage。(ZipPackage.java:93)     在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)     在com.wtolliver.spring.test.App.main(App.java:17)

4 个答案:

答案 0 :(得分:6)

看了一下之后。我浏览了APACHE POI的文档,发现这是常量之一(不是我知道这意味着什么)。 但最终,我意识到我使用的所有教程都是2014年之前,所以我只是将我的Maven POM更改为apache POI 3.11版本和POI-OOXML。 它现在正在工作。

答案 1 :(得分:2)

我用不同的常数得到了同样的错误。

线程“main”中的异常java.lang.NoSuchFieldError:RETURN_NULL_AND_BLANK poi。

谷歌搜索很多但没有回答。我正在使用apache poi-ooxml-3.11,后来我改为3.17然后它工作正常。

希望这对某人有帮助。

答案 2 :(得分:1)

我遇到了同样的错误,尝试将XSSFWorkbook配置更改为HSSFWorkbook。它对我有用。

答案 3 :(得分:0)

对于以下错误“ java.lang.NoSuchFieldError:RETURN_NULL_AND_BLANK”

请执行以下任务:就我而言,将APACHE POI 3。**升级到最新版本我已经做了以下事情我以前使用过apache poi 3.09之后又将lib升级到了最新版本,即3.12及其工作!

执行以下步骤,您的代码将但确保错误应该相同。