easyexcel 导出

EasyExcel 是一个基于 Java 的 Excel 处理工具,它支持导出功能,可以快速、简单地导出 Excel 文件,并且避免了内存溢出的风险。以下是使用 EasyExcel 导出 Excel 文件的两种常见方式:

  1. 通过 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);
}
  1. 保存到服务器并返回下载链接
@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 应该替换为您实际要导出的数据类,并且可能需要根据您的项目情况进行相应的调整。

Top