Я использую Apache POI Streaming API-SXSSFWorkbook для записи данных в файл excel. Но файл Excel поврежден более чем для 100 000 записей с 300 столбцами, если размер больше 100 МБ. Есть ли способ записи огромных данных в файл excel.Запись 1 миллиона записей в файл Excel с 300 столбцами
class Test1 {
public static void main(String[] args) throws FileNotFoundException, {
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
workbook.setCompressTempFiles(true);
Sheet sheet = null;
Row row = null;
Cell cell = null;
sheet = workbook.createSheet("Demo1");
FileOutputStream outStream = new FileOutputStream("D:\\Test1.xlsx");
try {
for (int i = 0; i < 100000; i++) {
row = sheet.createRow(i);
for (int j = 0; j < 300; j++) {
cell = row.createCell(j);
cell.setCellValue(" row : "+i +" col: "+ j);
}
}
workbook.write(outStream);
} catch (Exception exception) {
exception.printStackTrace();
} finally {
workbook.dispose();
try {
outStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Edit 1:
Я обнаружил, что это не проблема с Apache POI Streaming Api.It генерирует файл с 1 миллиона записей. Но Excel не загружает этот файл. Он дает сообщение «Недостаточно памяти для завершения этого действия».
Я использую 32-разрядную версию Excel 2013, которая может использовать только до 2 ГБ памяти. Файл excel, который я создал с 100 тыс. Записей и 300 столбцов, имеет размер файла 108 МБ. Когда я пытаюсь открыть этот файл в Excel, он занимает много системной памяти. Как только потребление памяти достигнет 1,7 МБ, Excel дает ошибку.
Какова минимальная конфигурация для загрузки 1 миллиона строк, созданных с использованием Apache Streaming API? Любая помощь будет оценена по достоинству.
Спасибо.
Редактировать 2: Если я открываю файл Excel, созданный с использованием Apache Streaming Api в формате zip (путем переименования .xlsx в .zip), размер файла xml в папке xl-> worksheets составляет около 2 ГБ для записей 100 тыс. И 300 колонны. Есть ли способ уменьшить размер этого xml-файла.
В чем проблема? Я пишу большие файлы XLSX с использованием потоковой передачи SXSSF и не испытывал проблем. (Помимо наличия достаточного дискового пространства с выходными и tmp-областями). – rpy
Когда я пытаюсь открыть файл с помощью Excel 2007, он показывает, что «Excel нашел нечитаемый контент». Любая помощь могла бы быть полезна. – teja
Вы проверили, достаточно ли свободного места на диске? Это тот же код, генерирующий рабочий файл Excel, который генерирует только некоторые строки (например, <100k)? Работает ли оно с меньшим количеством столбцов (например, <256)? – rpy