Java高效写入大量数据到Excel文件——使用Apache POI的SXSSFWorkbook
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.*;
public class ExcelWriter {
private static final int MAX_ROWS = 1000; // 每写完1000行Flush一次
public static void main(String[] args) throws IOException {
Workbook workbook = new SXSSFWorkbook(); // 创建工作簿实例
Sheet sheet = workbook.createSheet("数据"); // 创建工作表
// 写入数据
for (int rowNum = 0; rowNum < 10000; rowNum++) {
Row row = sheet.createRow(rowNum);
for (int colNum = 0; colNum < 10; colNum++) {
Cell cell = row.createCell(colNum);
cell.setCellValue("Cell " + rowNum + "," + colNum);
}
if (rowNum % MAX_ROWS == 0) {
workbook.write(flushToDisk(workbook)); // 达到指定行数时,将内容flush到磁盘
}
}
// 全部数据写入后,关闭工作簿
workbook.write(flushToDisk(workbook));
workbook.close();
}
private static OutputStream flushToDisk(Workbook workbook) throws IOException {
String filePath = "大数据.xlsx";
File file = new File(filePath);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePath);
workbook.write(fos);
fos.flush();
return fos;
}
}
这段代码使用了Apache POI库中的SXSSFWorkbook类来创建一个Excel工作簿,并通过循环写入了大量数据。每写完1000行数据后,会将当前的工作簿状态flush到磁盘中,以防止内存溢出。最后,在所有数据写入完毕后关闭工作簿并释放资源。这是一个实际应用中用于处理大量数据导出的高效方法。
评论已关闭