EasyExcel 公共导出方法满足数据过大分多个sheet
时间: 2023-07-29 07:09:10 浏览: 144
是的,EasyExcel提供了一种可以按照指定的条数或行数将数据分批次导出到多个sheet的功能。我们可以使用`ExcelWriterSheetBuilder`来实现这个功能。下面是一个示例代码:
```java
// 创建一个ExcelWriterSheetBuilder对象
ExcelWriterSheetBuilder excelWriterSheetBuilder = EasyExcel.write(fileName).head(headList);
// 设置每个sheet的数据行数
int batchSize = 10000;
// 循环遍历数据,每次写入batchSize行数据到一个sheet中
for (int i = 0; i < dataList.size(); i += batchSize) {
List<T> batchData = dataList.subList(i, Math.min(i + batchSize, dataList.size()));
excelWriterSheetBuilder.sheet("Sheet" + (i / batchSize + 1)).doWrite(batchData);
}
```
这段代码将数据分批次写入到多个sheet中,每个sheet中最多包含10000行数据。你可以根据实际情况调整`batchSize`的值来适应不同的数据量。另外,`fileName`是要导出的Excel文件名,`headList`是Excel表头信息,`dataList`是要导出的数据列表。
相关问题
EasyExcel 公共方法导出满足分多sheet
如果需要使用 EasyExcel 导出数据时,需要满足分多 sheet 的需求,可以使用以下公共方法:
1. 定义 ExcelWriter 对象,用于导出 Excel 文件:
```java
ExcelWriter excelWriter = EasyExcel.write(fileName).build();
```
2. 定义 Sheet 对象,用于创建 sheet:
```java
Sheet sheet = new Sheet(sheetNo, headLineMun, clazz);
```
其中,`sheetNo` 表示 sheet 的编号,`headLineMun` 表示表头行数,`clazz` 表示数据的类型。
3. 循环遍历数据,将数据写入 sheet:
```java
for (List<T> dataList : dataListList) {
sheet.setSheetName(sheetName + sheetNo);
excelWriter.write(dataList, sheet);
sheetNo++;
}
```
其中,`dataListList` 表示数据列表的列表,即多个 sheet 的数据列表,`sheetName` 表示 sheet 的名称。
4. 写入并关闭 ExcelWriter 对象:
```java
excelWriter.finish();
```
完整代码示例:
```java
public static void exportExcel(String fileName, List<List<T>> dataListList, String sheetName, int headLineMun, Class<T> clazz) {
ExcelWriter excelWriter = EasyExcel.write(fileName).build();
int sheetNo = 1;
for (List<T> dataList : dataListList) {
Sheet sheet = new Sheet(sheetNo, headLineMun, clazz);
sheet.setSheetName(sheetName + sheetNo);
excelWriter.write(dataList, sheet);
sheetNo++;
}
excelWriter.finish();
}
```
EasyExcel 公共导出方法
在 EasyExcel 中,公共导出方法如下:
```java
public static void exportExcel(List<?> list, String fileName, String sheetName, Class<?> clazz, HttpServletResponse response) throws IOException {
// 创建 ExcelWriter 对象
ExcelWriter writer = EasyExcelFactory.getWriter(response.getOutputStream());
// 设置 sheet 名称
Sheet sheet = new Sheet(1, 0, clazz);
sheet.setSheetName(sheetName);
// 写入数据
writer.write(list, sheet);
// 设置文件名称和响应头
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 关闭流
writer.finish();
}
```
其中,`list` 是要导出的数据列表,`fileName` 是导出文件名称,`sheetName` 是 Excel sheet 名称,`clazz` 是数据类型对应的类,`response` 是 HttpServletResponse 对象。这个方法会将数据写入到 Excel 文件中,并将文件作为响应返回给客户端。
阅读全文