EasyExcel 是一个基于 Java 的 Excel 处理工具,它支持导出功能,可以快速、简单地导出 Excel 文件,并且避免了内存溢出的风险。以下是使用 EasyExcel 导出 Excel 文件的两种常见方式:
- 通过 HttpServletResponse 返回文件流下载
@GetMapping("/exportExcel")
public void exportExcel(
@RequestParam(value = "menu") String menu,
@RequestParam(value = "dwflglId") int dwflglId,
@RequestParam(value = "qjCode") String qjCode,
HttpServletResponse response
) throws IOException {
// 获取数据集合和表头集合
List<Jthz> jthz = getJthz(dwflglId, qjCode);
List<Header> header = getHeaderOfHz(dwflglId, qjCode);
// 设置响应头
response.setHeader("Content-Disposition", "attachment; filename=Zjlryshz.xlsx");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// 使用 EasyExcel 写入数据到响应的输出流
EasyExcel.write(response.getOutputStream(), YourDataClass.class).sheet("Sheet1").doWrite(jthz);
}
- 保存到服务器并返回下载链接
@PostMapping("/export")
public ResponseEntity<Resource> export(HttpServletResponse response) throws IOException {
// 获取数据集合
List<YourDataClass> dataList = getYourDataList();
// 创建一个文件并写入数据
ByteArrayResource byteArrayResource = new ByteArrayResource(EasyExcel.write(dataList).getBytes());
// 设置 HTTP 响应头信息
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=your-file-name.xlsx");
headers.add("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// 返回文件资源
return ResponseEntity.ok()
.headers(headers)
.body(byteArrayResource);
}
以上代码示例展示了如何使用 EasyExcel 导出 Excel 文件。请根据您的具体需求调整代码,并确保导出的数据与 Excel 模板相匹配。
如果您需要导出包含图片的 Excel 文件,可以使用自定义转换器。例如,如果您的数据中包含员工照片,您可以创建一个自定义转换器来读取图片文件的字节流,并将其写入到 Excel 单元格中。
请注意,以上代码示例中的 YourDataClass
应该替换为您实际要导出的数据类,并且可能需要根据您的项目情况进行相应的调整。