Как записать в существующий файл, используя 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