easyexcel使用笔记(阿里)


poi比较占用内存。 easyexcel性能优化不少,值得一看。
excel工具不只一种,如poi(apache)、excelExcel(阿里)等。
做项目时根据已有框架,哪种都可能遇到,而导入多种excel依赖很容易冲突。最好在原种类上进行开发,所以每种都要会。

maven依赖

pom.xml中添加:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>2.1.6</version>
</dependency>

功能部分

excel工具好几种,每种工具命名都不一样,所以从命名角度来记很容易串。
那么从功能角度来找方法,会好一些。

private static List<DemoData> data() {
        List<DemoData> list = ListUtils.newArrayList();
        for (int i = 0; i < 5; i++) {
            DemoData data = new DemoData();
            data.setString("字符串" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56);
            list.add(data);
        }
        return list;
    }

自定义标题头(合并单元格等)

自定义标题头的方式不只一种。

list方式自定义标题头

做出list数据:

List<List<String>> generateHeadList(){
    List<List<String>> headList = new ArrayList<List<String>>();

    List<String> head_B = new ArrayList<String>();
    head_B.add("曹魏");
    head_B.add("曹魏");
    // 三国
    List<String> head_C = new ArrayList<String>();
    head_C.add("蜀汉");
    head_C.add("关羽");
    List<String> head_D = new ArrayList<String>();
    head_D.add("蜀汉");
    head_D.add("张飞");


    headList.add(head_B);
    headList.add(head_C);
    headList.add(head_D);

    return headList;
  }


设置head:

dataSheet.setHead(generateHeadList());

注解定义标题头

其实注解也是支持标题头的。 比list优雅多了。

代码:

@ExcelProperty(value = { "交通","公路" })
private String highWay;

@ExcelProperty(value = {"交通", "铁路" })
private String railWay;

value支持多个值,有几个表示几行。 如果值一样就会合并。

不要标题头

设置列宽

@ColumnWidth注解即可。
代码:

@ExcelProperty(value = { "交通","公路" })
@ColumnWidth(27)
private String highWay;

填充(这里说的是根据模板填充,不是追加)

fill()方法是根据模板填充,别误以为追加啊。
略。

末尾加统计行

有时代码封装的程度太高,想要自定义就比较麻烦。

通常会有这样的需求,客户会要求在末尾添加一行统计行。
这就有点难受,因为easyExcel分页查询并写入,统计行肯定不在分页查询里。

这里可以转换下思路,在要写入的list最后添加一行。类还和标准的类一致,就是字段值设置为统计的文字和数值即可。

注:这样就不适合用分页了,因为不知道哪一次是最后一次查询。如果分页会每次都插入一个合计行,这样是不对的。

而且,合计值应该统计全部的,不应该统计当前页面的(界面能展示的行数太少了)。

注:如果涉及到参数转换,request参数类尽量用个新类,把属性复制过来再转换。
否则查询全部的时候,可能会再次转换参数报错

例如 前端控件月份。 2024-05
纳税期月份。 202405
如果用一个request,再次查询的时候格式就不正确了。

那么合计值的计算有两个办法:
1、写个sql,进行全部计算。(如果计算规则不复杂,这种方式不错)
2、添加查询全部的代码,循环进行计算。(如果计算规则复杂,通过sql就不太好用,推荐查出来用java计算)

easyexcel 官方项目github地址:
https://github.com/alibaba/easyexcel
easyexcel 官网文档地址:
https://alibaba-easyexcel.github.io/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值