org.apache.poi.POIXMLException目前不支持严格的OOXML,请参见错误#57699

use*_*620 2 java excel apache-poi

我想用java解析一个Excel文件,所以我使用的是apache poi库,这里是maven依赖项:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.14</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这将包括一系列依赖项:

poi-ooxml-3.14.jar
poi-3.14.jar
commons-codec-1.10.jar
poi-ooxml-schemas-3.14.jar
xmlbeans-2.6.0.jar
stax-api-1.0.1.jar
curvesapi-1.03.jar
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下代码读取Office 365 Excel文件(.xslx)时:

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelConverter {

    public static void main(String[] args) throws Exception{
        String excelFilePath = "C:/temp/Book1.xlsx";
        File myFile = new File(excelFilePath);
        System.out.println("File exists: " + myFile.exists());
        FileInputStream inputStream = new FileInputStream(myFile);

        Workbook workbook = new XSSFWorkbook(inputStream);
   }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下控制台消息:

File exists: true
Exception in thread "main" org.apache.poi.POIXMLException: Strict OOXML isn't currently supported, please see bug #57699
    at org.apache.poi.POIXMLDocumentPart.getPartFromOPCPackage(POIXMLDocumentPart.java:679)
    at org.apache.poi.POIXMLDocumentPart.<init>(POIXMLDocumentPart.java:122)
    at org.apache.poi.POIXMLDocumentPart.<init>(POIXMLDocumentPart.java:115)
    at org.apache.poi.POIXMLDocument.<init>(POIXMLDocument.java:61)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:273)
    at org.myCompany.excel.ExcelConverter.main(ExcelConverter.java:25)
Run Code Online (Sandbox Code Playgroud)

你知道我该怎么做才能解决这个问题?提前致谢

Ste*_*n C 6

除了以下以外,目前似乎没有其他解决方案:

不要以“严格的OOXML”格式保存电子表格。