easyexcel 写内存
时间: 2023-08-12 08:53:53 浏览: 171
EasyExcel 是一个基于 Java 的操作 Excel 的工具,它可以读取和写入 Excel 文件。如果你想要使用 EasyExcel 写入大量数据到 Excel 文件中,但是又不想占用过多的内存,可以使用以下两种方式:
1. 分批写入:将数据分批写入 Excel 文件中,每次只写入一部分数据,然后清空内存,再写入下一批数据。
```java
ExcelWriter writer = EasyExcel.write(fileName).build();
List<List<Object>> dataList = new ArrayList<List<Object>>();
// 数据分批处理
for (int i = 0; i < totalRows; i += batchSize) {
int endIndex = Math.min(i + batchSize, totalRows);
List<List<Object>> subList = dataList.subList(i, endIndex);
// 将 subList 写入 Excel 文件中
writer.write(subList, sheet);
// 刷新缓冲区,将数据写入文件
writer.flush();
// 清空 subList,释放内存
subList.clear();
}
// 关闭 ExcelWriter
writer.finish();
```
2. 写入时使用回调函数:使用回调函数来逐行写入数据,每次只写入一行数据,然后清空内存,再写入下一行数据。
```java
ExcelWriter writer = EasyExcel.write(fileName).build();
// 使用回调函数写入数据
writer.write(dataList, new WriteHandler());
// 关闭 ExcelWriter
writer.finish();
// 定义 WriteHandler 类
public class WriteHandler implements WriteHandler {
@Override
public void sheet(int sheetNo, Sheet sheet) {
}
@Override
public void row(int rowNum, RowData rowData) {
// 将 rowData 写入 Excel 文件中
writer.write(rowData, sheet);
// 刷新缓冲区,将数据写入文件
writer.flush();
// 清空 rowData,释放内存
rowData.clear();
}
@Override
public void cell(int cellNum, CellData cellData) {
}
}
```
以上两种方式都可以有效地减少内存占用,提高程序的性能和稳定性。
阅读全文