У меня есть файл XLS, который, похоже, был сгенерирован каким-либо сторонним инструментом отчетности.Демонстрация POI 4.0.0 org.apache.poi.ss.examples.ToCSV не может открыть ее для конвертации:
Opening workbook [orig.XLS]
Caught an: java.lang.RuntimeException
Message: Unexpected record type (org.apache.poi.hssf.record.SelectionRecord)
Stacktrace follows:.....
java.lang.RuntimeException: Unexpected record type (org.apache.poi.hssf.record.SelectionRecord)
at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.<init>(RowRecordsAggregate.java:97)
at org.apache.poi.hssf.model.InternalSheet.<init>(InternalSheet.java:183)
at org.apache.poi.hssf.model.InternalSheet.createSheet(InternalSheet.java:122)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:355)
at org.apache.poi.hssf.usermodel.HSSFWorkbookFactory.createWorkbook(HSSFWorkbookFactory.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:314)
at org.apache.poi.ss.usermodel.WorkbookFactory.createHSSFWorkbook(WorkbookFactory.java:292)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:128)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:74)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:212)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:180)
at org.apache.poi.ss.examples.ToCSV.openWorkbook(ToCSV.java:377)
at org.apache.poi.ss.examples.ToCSV.convertExcelToCSV(ToCSV.java:340)
at org.apache.poi.ss.examples.ToCSV.convertExcelToCSV(ToCSV.java:193)
Это немного дальше, чем получил POI 3.17.Вот ошибка из 3.17:
Opening workbook [orig.XLS]
Caught an: java.lang.IllegalArgumentException
Message: The supplied POIFSFileSystem does not contain a BIFF8 'Workbook' entry. Is it really an excel file? Had: [Document Summary Info, Excel1, WorkBook]
Stacktrace follows:.....
java.lang.IllegalArgumentException: The supplied POIFSFileSystem does not contain a BIFF8 'Workbook' entry. Is it really an excel file? Had: [Document Summary Info, Excel1, WorkBook]
at org.apache.poi.hssf.usermodel.HSSFWorkbook.getWorkbookDirEntryName(HSSFWorkbook.java:298)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:339)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:102)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:182)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149)
at org.apache.poi.ss.examples.ToCSV.openWorkbook(ToCSV.java:393)
at org.apache.poi.ss.examples.ToCSV.convertExcelToCSV(ToCSV.java:350)
at org.apache.poi.ss.examples.ToCSV.convertExcelToCSV(ToCSV.java:197)
at org.apache.poi.ss.examples.ToCSV.main(ToCSV.java:682)
Я видел в других местах, что это может произойти, если файл защищен или зашифрован, но здесь это не так.
ФайлКонечно, открывается в Excel счастливо.
org.apache.poi.poifs.dev.POIFSViewer (версия 4.0.0) говорит:
POIFS FileSystem
Property: "Root Entry"
Name = "Root Entry"
Property Type = 5
Node Color = 0
Time 1 = 0
Time 2 = 131842787179025312
Size = 0
WorkBook
Property: "WorkBook"
Name = "WorkBook"
Property Type = 2
Node Color = 1
Time 1 = 0
Time 2 = 0
Size = 316001
Document Summary Info
Property: "Document Summary Info"
Name = "Document Summary Info"
Property Type = 2
Node Color = 0
Time 1 = 0
Time 2 = 0
Size = 0
Excel1
Property: "Excel1"
Name = "Excel1"
Property Type = 1
Node Color = 0
Time 1 = 131842787179008752
Time 2 = 131842787179008752
Size = 0