Мне нужно записать миллионы записей в файл Excel (.xlsx) на уже существующий шаблон (.xlsx).Первоначально я использовал XSSFWorkbook, и это, очевидно, привело меня к проблеме OOM.
Затем позже я перешел на SXSSFWorkbook, чтобы избежать проблемы OOM, как показано ниже,
FileInputStream fis = new FileInputStream(file);
OPCPackage pkg = OPCPackage.open(fis);
XSSFWorkbook mainBook = new XSSFWorkbook(pkg);
SXSSFWorkbook wb = new SXSSFWorkbook(mainBook,200);
Sheet sh = wb.getSheet("Sheet1");
Row row0 = sh.createRow(0);
В SXSSFWorkbook мы можемНе изменяйте существующий шаблон, поэтому я оставил шаблон пустым для записи данных с заголовками столбцов.
Но на row0 = sh.createRow(0);
, выдается ошибка вроде "java.lang.IllegalArgumentException: попытка записиrow[0]
в диапазоне [0,106403]
, который уже записан на диск "
Я совсем не уверен, как" 106403 "записывается на диск и что мне делать дальше?
Так возникает сомнение в этих трех,
Что такое FlushedRows и как он очищает строки 106403, когда я пытаюсь создать новую строку?
Что такое «Запись на диск»?
При инициализации «SXSSFWorkbook» с параметром «rowAccessWindowSize», в моем случае это 200 и что такое rowAccessWindowSize и что оно будет делать?