Как записать в существующий файл, используя SXSSF?

У меня есть файл.xlsx с несколькими листами, содержащими разные данные. Из всех листов один лист должен вместить около 100000 строк данных, и данные должны быть записаны с использованием Java с poi.

Это кажется довольно быстрым и простым с SXSSFWorkbook, где я могу хранить только 100 строк в памяти, но недостатком является то, что я могу записывать только в новый файл (или перезаписывать существующий файл).

Кроме того, мне не разрешено "загружать" существующий файл, т.е.

 SXSSFWorkbook wb = new SXSSFWorkbook(file_input_stream) 
не допускается.

Я могу использовать Workbook factory:

Workbook workbook = new SXSSFWorkbook();
workbook = WorkbookFactory.create(file_input_stream);

но когда придет время для меня, чтобы очистить ряды,

 ((SXSSFSheet)sheet).flushRows(100); 

Я получаю сообщение об ошибке, что преобразование типов не допускается из XSSFSheet в SXSSFSheet.

Я попытался выяснить, можно ли каким-либо образом копировать листы в разные рабочие книги, но пока кажется, что это нужно делать по клеткам.

Любые идеи о том, как подойти к этой проблеме?

1 ответ

Решение

У вас, вероятно, есть шаблон, к которому вы хотите добавить большие данные. Вам нужно использовать SXSSFWorkbook(XSSFWorkbook) конструктор:

XSSFWorkbook wb = new XSSFWorkbook(new File("template.xlsx"));
SXSSFWorkbook wbss = new SXSSFWorkbook(wb, 100);
Sheet sheet = wbss.createSheet("sheet1");
// now add rows to sheet
Другие вопросы по тегам