springboot EasyExcel导出数据超过65000条进行分sheet
时间: 2023-10-13 22:16:06 浏览: 52
如果数据量超过 Excel 单个 sheet 的最大行数 65536,可以使用 EasyExcel 提供的分 sheet 功能来实现。下面是一个使用分 sheet 的示例代码:
```
// 设置 ExcelWriter
ExcelWriter writer = EasyExcel.write(response.getOutputStream(), User.class).build();
// 每个 sheet 的行数
int sheetSize = 65000;
// 数据总行数
int dataSize = userList.size();
// 计算 sheet 数量
int sheetCount = (dataSize + sheetSize - 1) / sheetSize;
// 分 sheet 写入数据
for (int i = 0; i < sheetCount; i++) {
// 计算当前 sheet 的起始行和结束行
int startRow = i * sheetSize;
int endRow = Math.min(startRow + sheetSize, dataSize);
// 创建 Sheet 对象
Sheet sheet = new Sheet(i + 1, 0, User.class);
sheet.setSheetName("Sheet" + (i + 1));
// 写入数据
List<User> subList = userList.subList(startRow, endRow);
writer.write(subList, sheet);
}
// 完成写入操作
writer.finish();
```
在这个示例代码中,首先创建了一个 `ExcelWriter` 对象,然后计算出数据总行数和需要的 sheet 数量。在循环中,根据当前的 sheet 起始行和结束行,创建一个 `Sheet` 对象,并将数据写入该 sheet 中。需要注意的是,每个 sheet 的数据集合必须是数据列表的一个子列表,可以使用 `subList()` 方法来实现。
最后,调用 `writer.finish()` 方法完成写入操作。这样就可以将数据按照指定的行数分成多个 sheet 导出了。