0
を入力ファイルをストリーミングするときに私は、リソースストリームとしての私の.xlsxを渡すことによって、Apacheの-POIとのxlsxワークブックオブジェクトを作成しようとしています:「持つZipException:設定無効なコード長」Apacheの-POIに
Workbook workbook = WorkbookFactory.create(RFQGenerator.class.getResourceAsStream("/com/lumos/xlsx_manager/es/da/template.xlsx"));
FileInputStreamをローカルファイルパスを通して私のtemplate.xlsxを渡すとき、私は成功したワークブックをインスタンス化することができますが、私は、リソースのストリームを渡すとき、私は例外を取得:
java.io.IOException: Failed to read zip entry source
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:103)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149)
at com.lumos.xlsx_manager.es.da.RFQGenerator.createRfq(RFQGenerator.java:30)
at com.lumos.xlsx_manager.es.da.Firebase$2.onChildAdded(Firebase.java:88)
at com.google.firebase.database.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:81)
at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:65)
at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.zip.ZipException: invalid code lengths set
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureFile.java:220)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource$FakeZipEntry.<init>(ZipInputStreamZipEntrySource.java:132)
at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:56)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:100)
... 11 more
の.xlsx私は渡しているといけません圧縮されているかもしれませんが、おそらくそれがリソースストリームとどのように機能するのでしょうか。リソースへのアクセスを介してApache-POIにファイルを渡す方法に関するアイデアはありますか?
どのようにリソースに変換していますか?私の推測では、CRLF/LFの変更をバイナリファイルに適用するなど、ビルド段階でそれを破壊している – Gagravarr