Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会得到这个异常:线程中的异常;“主要”;org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException_Java_Excel_Apache - Fatal编程技术网

Java 为什么我会得到这个异常:线程中的异常;“主要”;org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException

Java 为什么我会得到这个异常:线程中的异常;“主要”;org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException,java,excel,apache,Java,Excel,Apache,我正在使用ApachePOI3.16读取excel文件这是我的代码 try { String excelPath = "C:\\Users\\wecme\\Desktop\\AccountStatement.xls"; FileInputStream fileInputStream = new FileInputStream(new File(excelPath)); // Create Workbook

我正在使用ApachePOI3.16读取excel文件这是我的代码

try
        {
            String excelPath = "C:\\Users\\wecme\\Desktop\\AccountStatement.xls";
            FileInputStream fileInputStream = new FileInputStream(new File(excelPath));

            // Create Workbook instance holding .xls file   
            XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);

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

            // Iterate through each rows
            java.util.Iterator<Row> rowIterator = sheet.iterator();

            while (rowIterator.hasNext())
            {
                // Get Each Row
                Row row = rowIterator.next();

                // Iterating through Each column of Each Row
                java.util.Iterator<Cell> cellIterator = row.cellIterator();

                while (cellIterator.hasNext())
                {

                    Cell cell = cellIterator.next();

                    // Checking the cell format
                    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;
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t");
                        break;


                    }  
                }
                System.out.println("");
            }  

        } catch (IOException ie)
        {
            ie.printStackTrace();
        }
当我读取另一个没有时间正确读取日期的文件时,但当我尝试读取此文件时,会出现此异常

Exception in thread "main" org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException: No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:286)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:758)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:327)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:291)
at excelRead.ReadExcel.main(ReadExcel.java:27)
线程“main”org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException中的异常:未找到有效的条目或内容,这不是有效的OOXML(Office Open XML)文件 位于org.apache.poi.openxml4j.opc.ZipPackage.getpartsiml(ZipPackage.java:286) 位于org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:758) 位于org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:327) 在org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) 位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:291) 位于excelRead.ReadExcel.main(ReadExcel.java:27)
请帮助我,谢谢。

您正在创建一个
XSSFWorkbook
,它只适用于处理xlsx文件,即新的基于xml的office格式。但是,您的文件扩展名(xls)表明这是较旧的Microsoft Office(我想是2003)格式。为了修复错误,您需要将文件转换为xlsx格式,或者使用

您可以在此处找到一些有关HSSF的示例:
这里可以找到一些有关XDDF的示例:

根据引发异常的代码(请参阅:)

以及包的名称(openxml4j),要求文件采用与openxml兼容的格式。(即xlsx)

在您的情况下,库无法打开该文件,因为它不是可以打开的.zip格式

两个月前也有人问过这个问题,也许这也有帮助:


NotOfficeXmlFileException
-它需要的是xlsx,而不是xls。我对读取Excel文件不太熟悉,但您是否尝试过将其转换为较新的.xlsx格式?这只是一种预感,所以我可能是错的。但是我有xls,我不想用xlsx再次保存它,我怎么能做到这一点呢?@Josef Hoppe我已经尝试过它的到来,但我想按照它的样子来读。你链接到的问答没有任何有用的答案,因此,我怀疑它是否会有帮助。我认为另一个问题上的用户在使用正确的xslx文件时仍然会出现这个错误,这可能有助于了解这里发生了什么。
Exception in thread "main" org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException: No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:286)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:758)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:327)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:291)
at excelRead.ReadExcel.main(ReadExcel.java:27)