holyya.com
2025-09-05 00:37:00 Friday
登录
文章检索 我的文章 写文章
如何利用Java EasyExcel实现导出列筛选
2023-06-15 14:47:39 深夜i     --     --
Java EasyExcel

文章内容:

在日常的工作中,我们经常需要将数据库中的数据导出到Excel表格中,以供其他人员进行数据分析。而如果导出的数据量特别大时,导出所有列的数据会使Excel表格中的数据变得十分繁琐。这时候,如何实现导出列筛选是我们需要掌握的技能之一。

利用Java EasyExcel工具可以实现Excel表格的导入导出,而其中导出的列筛选功能十分实用。接下来我们来详细讲解如何在Java EasyExcel中实现导出列筛选:

1. 导出所有列数据

在Java EasyExcel中,我们可以使用以下代码来实现导出所有列的数据:


// 导出Excel

EasyExcel.write(fileName, 表名.class).sheet(表名) .doWrite(数据集合);

其中,fileName为导出的Excel文件名,表名.class为表格的数据模型类,数据集合为需要导出的数据集合。

2. 导出部分列数据

如果我们只需要导出部分列的数据,可以使用EasyExcel中的tableHead注解标记需要导出的列,如下所示:


// 定义表头

@TableHead(表头名 = "列名1") private String columnName1;

@TableHead(表头名 = "列名2") private String columnName2;

@TableHead(表头名 = "列名3") private String columnName3;

// 导出Excel

EasyExcel.write(fileName, 表名.class).sheet(表名) .doWrite(数据集合);

这样,导出的Excel表格中就只有标有列名1,列名2和列名3的三列数据。

3. 动态生成表头

有时候,我们需要根据参数动态控制需要导出的列,此时可以使用EasyExcel中的writeSheet注解和tableHead注解来动态生成表头和设置某些列的可见性,代码如下:


@Slf4j

@RestController public class ExcelController { @GetMapping("/download")

 public void download(HttpServletResponse response) {

  try {

   response.setContentType("application/vnd.ms-excel");

   response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("文件名", "UTF-8"));

   List userList = new ArrayList<>(); // 针对不同时期的参数,决定导出哪些列

   List writeSheetList = new ArrayList<>();

   // 第一次导出,只导出 A、B、C 列

   List tableFieldList1 = Arrays.asList(new TableField("A"), new TableField("B"), new TableField("C"));

   List subList1 = ...

   DynamicHeadUserWrite write1 = new DynamicHeadUserWrite(subList1, tableFieldList1);

   writeSheetList.add(new WriteSheet(write1.getSheetName(), write1));

   userList.addAll(subList1);

   // 第二次导出,只导出 D、E、F 列

   List tableFieldList2 = Arrays.asList(new TableField("D"), new TableField("E"), new TableField("F"));

   List subList2 = ...

   DynamicHeadUserWrite write2 = new DynamicHeadUserWrite(subList2, tableFieldList2);

   writeSheetList.add(new WriteSheet(write2.getSheetName(), write2));

   userList.addAll(subList2);

   EasyExcel.write(response.getOutputStream(), User.class).registerWriteHandler(new CustomColumnWidthStyleStrategy()) .write(userList, writeSheetList).finish(); } catch (Exception e) { log.error("download error", e); } }

}

通过以上三个步骤,我们就可以轻松实现 Java EasyExcel 的导出列筛选功能。

关键词:Java EasyExcel、导出、列筛选

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复