У меня есть файл .xls, который я могу открыть в Excel, но когда я пытаюсь открыть его с помощью Apache POI, я получаю это исключение:Исключение при открытии XLS файлов
java.io.IOException: block[ 3 ] already removed - does your POIFS have circular or duplicate block references?
at org.apache.poi.poifs.storage.BlockListImpl.remove(BlockListImpl.java:89)
at org.apache.poi.poifs.storage.RawDataBlockList.remove(RawDataBlockList.java:34)
at org.apache.poi.poifs.storage.BlockAllocationTableReader.fetchBlocks(BlockAllocationTableReader.java:221)
at org.apache.poi.poifs.storage.BlockListImpl.fetchBlocks(BlockListImpl.java:123)
at org.apache.poi.poifs.storage.RawDataBlockList.fetchBlocks(RawDataBlockList.java:34)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:528)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:327)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:308)
at controlers.ExcelProject2.setBook(ExcelProject2.java:327)
at controlers.ExcelProject2.<init>(ExcelProject2.java:149)
at controlers.ExcelProject2Tests.main(ExcelProject2Tests.java:41)
Проблема появляется в этой части мой код:
FileInputStream fs = new FileInputStream(pathFiles);
Workbook book = new HSSFWorkbook(fs);
Если открыть файл в Excel, «Сохранить как», а затем открыть новый файл с Java, он работает. Даже если я открою файл и сохраню, ничего не меняя, он работает. Я не знаю, почему, но новый файл больше старого.
Я попытался использовать решение differents, которое я нашел в google, например, используя BOMInputStream или файл NPOI, но это не сработало. Я в настоящее время использую poi-3.8-20120326.
Я не могу поделиться файлом, потому что он содержит личную информацию, но там нет ничего, кроме числа и строки.
Я остаюсь в вашем распоряжении для получения дополнительной информации.
С уважением.
EDIT: Я не знаю, если это имеет значение, но я забыл сказать, что файл находится в режиме совместимости
Как было создано xls? Можете ли вы опубликовать этот код? Можете ли вы создать его без личной информации и поделиться им? – Burkhard
Ну, idk, как генерируется xls, потому что он исходит от клиента. И я не могу делиться без личной информации, потому что, если я его изменю, ошибка исчезнет: /. Я думаю, что могу опубликовать экран, если я скрою некоторые данные, но я не знаю, полезно ли это – HRomain