springboot 使用easyexcel 查询数据超过65000条导出分多个sheet
时间: 2024-01-24 15:02:20 浏览: 182
可以使用 EasyExcel 提供的 `@Sheet` 注解来实现将数据分成多个 sheet 导出的功能。
具体步骤如下:
1. 在需要导出的实体类上使用 `@Sheet` 注解,设置 `name` 属性为当前 sheet 的名称,`order` 属性为当前 sheet 的顺序。
```java
@Data
@Sheet(name = "Sheet1", order = 1)
public class DemoData {
@ExcelProperty("字符串标题")
private String string;
@ExcelProperty("日期标题")
private Date date;
@ExcelProperty("数字标题")
private Double doubleData;
}
```
2. 在导出代码中,创建 `ExcelWriter` 对象,并使用 `write()` 方法将数据写入 Excel 文件。
```java
// 创建 ExcelWriter 对象
ExcelWriter writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLSX, true);
// 查询数据
List<DemoData> dataList = getDataList();
// 分批写入数据
int batchSize = 1000;
int sheetNo = 1;
while (sheetNo <= Math.ceil((double) dataList.size() / batchSize)) {
// 创建当前 sheet 对应的 WriteSheet 对象
WriteSheet sheet = EasyExcel.writerSheet(sheetNo, "Sheet" + sheetNo).build();
// 计算当前 sheet 中的数据范围
int fromIndex = (sheetNo - 1) * batchSize;
int toIndex = Math.min(sheetNo * batchSize, dataList.size());
// 写入数据
List<DemoData> sheetDataList = dataList.subList(fromIndex, toIndex);
writer.write(sheetDataList, sheet);
sheetNo++;
}
// 关闭 ExcelWriter 对象
writer.finish();
```
这样,就可以将数据分成多个 sheet 导出到同一个 Excel 文件中了。
阅读全文