Я пытаюсь открыть файл Excel размером 22MB
, содержащий 9905
строк (на мой взгляд, не такой большой).
Я пытаюсь открыть его следующим образом: java apache poi
:
final File f = Utils.getFileWithRespectToJar(this, filename);
final Workbook workbook = WorkbookFactory.create(f);
final Sheet sheet = workbook.getSheetAt(0);
final int maxRowLength = sheet.getLastRowNum();
Через несколько секунд java занимает около 3,3 ГБ ОЗУ и 90% ЦП, и примерно через минуту мой проект Eclipse аварийно завершает работу, за исключением
java.lang.OutOfMemoryError: превышен лимит накладных расходов GC
apache poi
просто очень не работает или я что-то не так делаю?
Редактировать: Ранее я использовал файл .xlsm
(файл Excel с включенными макросами). Я снова сохранил его как файл .xlsx
(макросы отключены) и увеличил размер кучи до 4GB
. Теперь Java занимает 4GB
ОЗУ (= 90%) и 90% ЦП примерно за 15 минут до сбоя моего приложения Eclipse.
Я использовал apache poi 3.16
и обновил свой maven pom
файл для использования 4.0.0
(последняя версия), но эта новая версия работает по-другому, поэтому я получаю много исключений, например:
org.apache.poi.ooxml.POIXMLException:
org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit (I), Lorg / Apache / XMLBeans / XmlOptions;
в
org.apache.poi.ooxml.POIXMLFactory.createDocumentPart (POIXMLFactory.java:66)
в
org.apache.poi.ooxml.POIXMLDocumentPart.read (POIXMLDocumentPart.java:648)
в org.apache.poi.ooxml.POIXMLDocument.load (POIXMLDocument.java:180)
в
org.apache.poi.xssf.usermodel.XSSFWorkbook. (XSSFWorkbook.java:286)
в
org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook (XSSFWorkbookFactory.java:83)
в
org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook (XSSFWorkbookFactory.java:111)
Причина: java.lang.NoSuchMethodError:
org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit (I), Lorg / Apache / XMLBeans / XmlOptions;
в
org.apache.poi.ooxml.POIXMLTypeLoader. (POIXMLTypeLoader.java:43)
в org.apache.poi.xssf.model.ThemesTable. (ThemesTable.java:86)