用Java写一个easyexcle导出文件两个脚本页中导出数据
时间: 2024-02-17 13:05:27 浏览: 71
假设你已经有了需要导出的数据和相应的实体类,同时已经引入了EasyExcel库,那么可以按照以下步骤实现导出功能:
1. 创建一个导出工具类,定义导出方法,例如:
```
public class ExcelExportUtil {
/**
* 导出Excel数据
*
* @param dataList 数据列表
* @param sheetName sheet名称
* @param clazz 实体类
* @param response 响应对象
* @throws IOException IO异常
*/
public static void export(List<?> dataList, String sheetName, Class<?> clazz, HttpServletResponse response) throws IOException {
// 设置响应信息
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(sheetName + ".xlsx", "UTF-8"));
// 写入数据
EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(dataList);
}
}
```
2. 在需要导出的地方调用该方法,例如:
```
List<User> userList = userService.listUser();
ExcelExportUtil.export(userList, "用户列表", User.class, response);
```
其中,User是需要导出的实体类,userList是需要导出的数据列表,"用户列表"是sheet的名称,response是HttpServletResponse响应对象。
3. 如果需要导出多个sheet,可以按照以下方式实现:
```
public static void export(List<List<?>> dataListList, List<String> sheetNameList, List<Class<?>> clazzList, HttpServletResponse response) throws IOException {
// 设置响应信息
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("导出文件.xlsx", "UTF-8"));
// 写入数据
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
for (int i = 0; i < dataListList.size(); i++) {
WriteSheet writeSheet = EasyExcel.writerSheet(i, sheetNameList.get(i)).head(clazzList.get(i)).build();
excelWriter.write(dataListList.get(i), writeSheet);
}
excelWriter.finish();
}
```
在该方法中,需要传入多个数据列表、sheet名称、实体类,以及HttpServletResponse响应对象。其中,dataListList、sheetNameList、clazzList分别对应需要导出的多个sheet的数据列表、名称、实体类。
阅读全文