一、前言
项目又提需求导出复杂样式表格,还要根据不同区划导出不同数据,又琢磨学习了下easyexcel和poi,实现效果如下:
1、多级表头合并
2、表头底纹+表格边框
3、合并相同数据单元格
4、尾行加入备注
二、效果图
直接上图
三、依赖
注意文中还需引入Lombok注解
Easyexcel
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
四、具体实现
1、测试类说明
注解说明:
@ContentRowHeight(25) //内容行高
@HeadRowHeight(20)//表头行高
@ColumnWidth(15)列宽度
@ExcelProperty(value = {"用户信息","行政区划","市级"}, index = 1)表头信息:
value中 相同表头会自动合并,index要按照自己需求设置好,否则字段顺序会乱
示例中用户信息是一级表头,行政区划是二级表头,市级、县市区是三级

代码
package com.hua.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
/**
* @Author su
* @Date 2023-09-15 14:47
* @Description
**/
@Data
@ContentRowHeight(25) //内容行高
@HeadRowHeight(20)//表头行高
public class ReportUserInfoBO implements Serializable {
@ColumnWidth(5)//宽度
@ExcelProperty(value = {"用户信息","序号"}, index = 0)
private String id;
@ColumnWidth(10)
@ExcelProperty(value = {"用户信息","行政区划","市级"}, index = 1)
private String sjmc;
@ColumnWidth(15)
@ExcelProperty(value = {"用户信息","行政区划","县(市、区)"}, index = 2)
private String qxmc;
@ColumnWidth(15)
@ExcelProperty(value = {"用户信息","用户名称"}, index = 3)
private String userName;
@ColumnWidth(15)
@ExcelProperty(value = {"用户信息","下单总数"}, index = 4)
private String sumNum;
}
2、控制层入口
说明:这块代码主要是造数据并在失败异常时处理异常转化为json格式方便前端展现。为序号复制根据自己需求来即可。
@GetMap

本文介绍了如何使用Easyexcel和poi库在Java中处理复杂表格需求,包括多级表头合并、表头底纹和边框设置,以及合并相同数据单元格。作者提供了示例代码,展示了如何在控制层生成Excel文件,并展示了合并工具类的使用。

1866

被折叠的 条评论
为什么被折叠?



