Java 使用POI的异常

Java 使用POI的异常,java,apache-poi,Java,Apache Poi,我使用的是poi 3.7,上传的文件是.xlsx 控制台显示: org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13] at org.apache.poi.util.PackageHelper.open(PackageHelper.java:41) at

我使用的是poi 3.7,上传的文件是.xlsx

控制台显示:

org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]
    at org.apache.poi.util.PackageHelper.open(PackageHelper.java:41)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:186)
    at poi.POITest.ReadAndPrintExcelFile(POITest.java:15)
    at poi.POITest.main(POITest.java:59)
Caused by: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]
    at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:147)
    at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:592)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:222)
    at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
    ... 3 more
org.apache.poi.poixmleexception:org.apache.poi.openxml4j.exceptions.InvalidFormatException:包应包含内容类型部分[M1.13]
在org.apache.poi.util.PackageHelper.open(PackageHelper.java:41)
位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:186)
在poi.POITest.ReadAndPrintExcelFile(POITest.java:15)中
位于poi.POITest.main(POITest.java:59)
原因:org.apache.poi.openxml4j.exceptions.InvalidFormatException:包应包含内容类型部分[M1.13]
位于org.apache.poi.openxml4j.opc.ZipPackage.getpartsiml(ZipPackage.java:147)
位于org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:592)
位于org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:222)
位于org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
... 3个以上

我使用POI,有时当这种情况发生时,你只需通过实验来找出问题所在。以下是我过去为帮助找出问题所在所做的工作:

  • 将文件转换为.xls格式,然后查看是否加载。如果是,请重新保存为.xlsx,然后重试

  • 如果文件有多个工作表,请尝试将每个工作表另存为单独的文件,并查看它们是否可以加载

  • 如果将其缩小到特定的图纸,请加载图纸的各个部分,然后查看是哪个部分导致了问题

  • 通常,如果你使用这种“分而治之”的方法,你可以很快地解决问题


    公式和宏可能特别有问题。

    我使用POI,有时发生这种情况时,你只需通过实验来找出问题所在。以下是我过去为帮助找出问题所在所做的工作:

  • 将文件转换为.xls格式,然后查看是否加载。如果是,请重新保存为.xlsx,然后重试

  • 如果文件有多个工作表,请尝试将每个工作表另存为单独的文件,并查看它们是否可以加载

  • 如果将其缩小到特定的图纸,请加载图纸的各个部分,然后查看是哪个部分导致了问题

  • 通常,如果你使用这种“分而治之”的方法,你可以很快地解决问题

    公式和宏可能特别有问题。

    只需使用
    org.apache.poi.ss.usermodel.WorkbookFactory
    而不是创建实例:新建HSSFWorkbook()或新建XSSForkbook()

    只用
    org.apache.poi.ss.usermodel.WorkbookFactory
    而不是创建实例:新建HSSFWorkbook()或新建XSSForkbook()


    不是你想听的答案。但是我发现当密码错误时我会出现这个错误。 检查对Decryptor.verifyPassword()的调用在代码中是否返回true。如果是这样,密码就可以了

    对我来说,我得到了一个false,代码被忽略并尝试读取文件。然后我得到了“包应该包含内容类型部分[M1.13]”错误。 一旦我输入了正确的密码,我得到了返回的true,文件被解密


    希望这对你有所帮助,而不是你想听的答案。但是我发现当密码错误时我会出现这个错误。 检查对Decryptor.verifyPassword()的调用在代码中是否返回true。如果是这样,密码就可以了

    对我来说,我得到了一个false,代码被忽略并尝试读取文件。然后我得到了“包应该包含内容类型部分[M1.13]”错误。 一旦我输入了正确的密码,我得到了返回的true,文件被解密


    希望这对您有所帮助

    如果您正在使用open office并试图以xlsx格式保存文件,您仍然会收到错误;使用xssf也不能解决问题。您需要使用Microsoft Office Excel工作表以避免错误。

    如果您使用open Office并试图以xlsx格式保存文件,仍然会出现错误;同样,使用xssf也不能解决问题。您需要使用Microsoft Office Excel工作表来避免错误。

    我发现我的xlsx文件已损坏,因此必须将其删除并重新创建。

    我发现我的xlsx文件已损坏,因此必须将其删除并重新创建。

    您试图打开的文件似乎已损坏。你能直接在Excel中打开它吗?看起来你使用了错误的库来打开你的Excel文件我可以直接在Excel中打开它!!!该库不是从官方网站下载的。您试图打开的文件似乎已损坏。你能直接在Excel中打开它吗?看起来你使用了错误的库来打开你的Excel文件我可以直接在Excel中打开它!!!图书馆不是从官方网站下载的。非常感谢!这是我见过的最简单的解释和解决方案。非常感谢!这是一个比我见过的任何东西都简单得多的解释和解决方案。
    Workbook exWorkBook = WorkbookFactory.create(excelInputStream);