1

私は 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
4

5 に答える 5

12

インスタンスを作成する org.apache.poi.ss.usermodel.WorkbookFactory代わりに、新しいHSSFWorkbook()または新しいXSSFWorkbook()を使用してください。

Workbook exWorkBook = WorkbookFactory.create(excelInputStream);
于 2012-11-15T21:46:02.977 に答える
3

あなたが聞きたい答えではないかもしれません。しかし、パスワードが間違っているとこのエラーが発生することがわかりました。コードで Decryptor.verifyPassword() の呼び出しが true を返すかどうかを確認します。もしそうなら、パスワードは問題ないはずです。

私にとっては、false が発生し、コードは無視され、とにかくファイルを読み取ろうとしました。その後、「パッケージにはコンテンツ タイプ パーツ [M1.13] を含める必要があります」というエラーが表示されました。正しいパスワードを入力すると、true が返され、ファイルが復号化されました。

お役に立てれば

于 2013-05-02T17:58:48.690 に答える
1

私は POI を使用していますが、これが発生した場合は、実験して問題を特定する必要があります。問題が何であるかを理解するために、私が過去に行ったことは次のとおりです。

  1. ファイルを .xls 形式に変換し、読み込まれるかどうかを確認します。含まれている場合は、.xlsx として再保存し、再試行してください。

  2. ファイルに複数のシートがある場合は、各シートを個別のファイルとして保存し、読み込めるかどうかを確認してください。

  3. 特定のシートに絞り込む場合は、シートの一部を読み込んで、どの部分が問題を引き起こしているかを確認します。

通常、この「分割統治」アプローチを使用すると、問題をかなり迅速に把握できます。

数式とマクロは特に問題になる可能性があります。

于 2012-04-14T00:46:57.613 に答える
0

オープン オフィスを使用していて、ファイルを xlsx 形式で保存しようとすると、エラーが発生します。また、xssf を使用しても目的は解決しません。エラーを回避するには、Microsoft Office Excel シートを使用する必要があります。

于 2014-02-19T11:09:56.607 に答える