java使用easypoi导出动态列excel

简介

asypoi功能如同名字easy,主打的功能就是让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。


一、场景描述

客户要求导出一张结算报表,报表的列头是选择结算的日期区间,也就是需要根据日期分组,然后计算这个日期下的结算金额和笔数,最后再计算合计。针对这个场景,我整理了下代码,如下:

二、使用步骤

1.引入Jar包

这是针对导出Excel的,如果是Word还需要自行拷贝其他包(示例):

       <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.2.0</version>
        </dependency>

2.代码实现

代码如下(示例):

    public void exportReport(Map<String, Object> params, HttpServletRequest request,
                                         HttpServletResponse response) {
   
        ModelMap modelMap = new ModelMap();
        Map<String, Object> dataMap = Maps.newHashMap();
		//模板存放路径,在你项目的Resource下随便建个文件夹,把模板放进去就好
        TemplateExportParams tempParams = new TemplateExportParams("TemplateFiles/test.xlsx");
        // 获取结算数据
        List<TestEntity> list = baseDao.getAllSummaryList(params);
        // 把数据转成excel数据
        List<TestExcel> dataList = ConvertUtils.sourceToTarget(list, TestExcel.class);
        //按照结算日期分组(获取动态列头)
        Map<Object, List<TestExcel>> listTwo = new HashMap<>();
        //根据商户分组(获取行)
        Map<Object, List<TestExcel>> listOne = dataList.stream().

你可能感兴趣的:(java使用easypoi导出动态列excel)