2016-04-07 8 views
0

Я использую библиотекуЧитать большой Excel файл .xlsx

org.apache.poi 


XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); 

Я пытаюсь

org.xml.sax 

библиотеку, но может не в состоянии преобразовать его в книге

Примечание: на конечный результат я хочу, чтобы XSSFWorkbook был возвращен

вышеуказанный код выйдет из памяти, любая помощь будет оценена ThankQ заранее

+1

«ПРИМЕЧАНИЕ: в конце я хочу вернуть XSSFWorkbook»: Это невозможно. XSSFWorkbook должен быть полностью в памяти. Попробуйте использовать SXSSFWorkbook https://poi.apache.org/spreadsheet/how-to.html#sxssf. –

+0

Вопрос о чтении, а не написании, о котором SXSSFWorkbook. – centic

ответ

1

Если входные данные слишком велики для доступной памяти, у вас есть два варианта.

а) обеспечивают дополнительную память с помощью опции -Xmx Java командной строки

б) использовать Streaming-API of POI.

Вариант a) будет прост в использовании, если файлы в конечном итоге поместится в памяти. Если файл слишком большой для доступной физической памяти, вам нужно будет взглянуть на параметры потоковой передачи, особенно в примере XLSX2CSV показано, как вы можете читать данные из произвольно больших файлов .xlsx, хотя и с некоторыми функциями, которые требуют доступа к нескольким ячейки недоступны из коробки.

 Смежные вопросы

  • Нет связанных вопросов^_^