EasyExcel.write()怎么导出一亿级别的数据
时间: 2025-01-13 09:05:13 浏览: 27
在使用EasyExcel导出大量数据时,直接一次性将所有数据写入Excel文件会导致内存溢出。因此,我们需要采用分批处理的方式,将数据分批写入文件。以下是一个使用EasyExcel导出大量数据的示例代码:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.handler.WriteHandler;
import java.io.File;
import java.util.List;
public class LargeDataExporter {
public void exportLargeData(List<YourData> dataList, String fileName) {
ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName, YourData.class);
writerBuilder.sheet("Sheet1").doWrite(dataList, (writeSheet, writeContext) -> {
int batchSize = 100000; // 每批处理的数据量
int totalSize = dataList.size();
int fromIndex = 0;
while (fromIndex < totalSize) {
int toIndex = Math.min(fromIndex + batchSize, totalSize);
List<YourData> batchData = dataList.subList(fromIndex, toIndex);
writeContext.write(batchData);
fromIndex += batchSize;
}
});
}
public static void main(String[] args) {
LargeDataExporter exporter = new LargeDataExporter();
List<YourData> dataList = // 获取你的数据
String fileName = "large_data.xlsx";
exporter.exportLargeData(dataList, fileName);
}
}
```
在这个示例中,我们使用`EasyExcel.write()`方法创建一个Excel写入器,并通过`doWrite()`方法分批写入数据。每批处理的数据量可以根据实际情况进行调整。
阅读全文
相关推荐

















