我尝试构建从 Oracle 到 xlsx 的报告,但我的服务器卡住了。我这样做:
int i = 0;
while (resultSet.next()) {
//Create a new row in current sheet
Row row = sheet.createRow(i);
//Create a new cell in current row
row.createCell(0).setCellValue(resultSet.getInt(1));
row.createCell(1).setCellValue(resultSet.getString(2));
row.createCell(2).setCellValue(resultSet.getString(3));
row.createCell(3).setCellValue(resultSet.getLong(4));
row.createCell(4).setCellValue(resultSet.getString(5));
row.createCell(5).setCellValue(resultSet.getString(6));
row.createCell(6).setCellValue(resultSet.getString(7));
row.createCell(7).setCellValue(resultSet.getString(8));
row.createCell(8).setCellValue(resultSet.getString(9));
row.createCell(9).setCellValue(resultSet.getString(10));
row.createCell(10).setCellValue(resultSet.getString(11));
row.createCell(11).setCellValue(resultSet.getLong(12));
i++;
}
FileOutputStream out = new FileOutputStream(new File("C:\\new.xls"));
wb.write(out);
out.close();
resultSet.close();
sqlStatment.close();
sqlConnection.close();
我的 resultSet
有大约 500 000 行。我没有得到错误。如何正确构建多行 xlsx 文件?
最佳答案
您的问题是由 Apache-POI(与大多数 API 一样)尝试在内存中构建 xls 文件这一事实引起的。要解决这个问题,您有两种选择:
SXSSF .这是一个使用 Apache POI 库构建的流媒体解决方案。它的工作方式与您已有的类似,但会将额外的内容刷新到磁盘,应该可以让您轻松处理大文件。
或者,您也可以只编写 CSV 文件。这样您就可以抛弃整个 POI 库并编写纯 CSV 文件。这些可以使用标准 Java 代码(如果您认为需要,也可以使用 CSS 库)逐行编写,然后如果该报告的用户需要,则将其转换为 XLSX。如今,Excel 可以轻松打开 CSV 文件。
关于java - 如何正确构建包含多行的 xlsx 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33493982/