【EsayExcel】EsayExcel生成自定义表头

1.项目背景

项目中需要生成Excel报表,类似下图,由于需要动态生成表头,借此机会,整理EsayExcel使用流程

 

 

2.项目依赖

 SpringBoot版本2.x

        <!--HuTool工具类-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.13</version>
        </dependency>
        <!--EasyExcel-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.4</version>
        </dependency>

        <!--POI相关依赖-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

 

3.代码

动态表格构建思路,表头可以认为是一个二维数组,按下面的列的数字去构建内存的数组,内层的数组元素的个数就是表头列的合并单元格后的行数

List<List<Object>> 二维数组
List<Object> 内层数组

 

 

 

 

    public static void main(String[] args) {
        simpleWrite();
    }

    public static void simpleWrite() {
        //Excel文件输的出位置
        String outPath = "D:\\excel\\test.xlsx";
        try {
            //创建ExcelWriter写入对象
            ExcelWriter excelWriter = EasyExcel.write(new FileOutputStream(outPath)).build();

            //创建Sheet对象
            WriteSheet sheet = new WriteSheet();
            //设置第N个Sheet
            sheet.setSheetNo(1);
            //设置Sheet名称
            sheet.setSheetName("第一个Sheet");

            //创建表格对象
            WriteTable table = new WriteTable();
            //设置第N个表格
            table.setTableNo(1);


            //创建表头集合
            List<List<String>> headList = new ArrayList<List<String>>();

            //第N列的表头
            List<String> headTitle1 = new ArrayList<>();
            List<String> headTitle2 = new ArrayList<>();
            List<String> headTitle3 = new ArrayList<>();
            List<String> headTitle4 = new ArrayList<>();
            List<String> headTitle5 = new ArrayList<>();
            List<String> headTitle6 = new ArrayList<>();
            List<String> headTitle7 = new ArrayList<>();
            List<String> headTitle8 = new ArrayList<>();
            List<String> headTitle9 = new ArrayList<>();
            List<String> headTitle10 = new ArrayList<>();
            List<String> headTitle11 = new ArrayList<>();
            List<String> headTitle12 = new ArrayList<>();
            List<String> headTitle13 = new ArrayList<>();
            List<String> headTitle14 = new ArrayList<>();
            List<String> headTitle15 = new ArrayList<>();
            List<String> headTitle16 = new ArrayList<>();
            List<String> headTitle17 = new ArrayList<>();
            List<String> headTitle18 = new ArrayList<>();
            List<String> headTitle19 = new ArrayList<>();
            List<String> headTitle20 = new ArrayList<>();
            List<String> headTitle21 = new ArrayList<>();
            List<String> headTitle22 = new ArrayList<>();
            headTitle1.add("日期");
            //Dau
            headTitle2.add("Dau");
            headTitle2.add("总");
            //第三列
            headTitle3.add("Dau");
            headTitle3.add("新用户");
            headTitle3.add("Dau");
            //第四列
            headTitle4.add("Dau");
            headTitle4.add("新用户");
            headTitle4.add("%");
            //第五列
            headTitle5.add("Dau");
            headTitle5.add("游戏");
            headTitle5.add("Dau");
            //第六列
            headTitle6.add("Dau");
            headTitle6.add("游戏");
            headTitle6.add("%");
            //第七列
            headTitle7.add("Dau");
            headTitle7.add("加速");
            headTitle7.add("Dau");
            //第八列
            headTitle8.add("Dau");
            headTitle8.add("加速");
            headTitle8.add("%");
            //第九列
            headTitle9.add("Dau");
            headTitle9.add("语音");
            headTitle9.add("Dau");
            //第十列
            headTitle10.add("Dau");
            headTitle10.add("语音");
            headTitle10.add("%");
            //===============行为-加速==================
            //第11列
            headTitle11.add("行为");
            headTitle11.add("加速");
            headTitle11.add("<30分钟");
            headTitle11.add("新用户");
            //第12列
            headTitle12.add("行为");
            headTitle12.add("加速");
            headTitle12.add("<30分钟");
            headTitle12.add("老用户");
            //第13列
            headTitle13.add("行为");
            headTitle13.add("加速");
            headTitle13.add(">30分钟");
            headTitle13.add("新用户");
            //第14列
            headTitle14.add("行为");
            headTitle14.add("加速");
            headTitle14.add(">30分钟");
            headTitle14.add("老用户");
            //===============行为-游戏==================
            //第15列
            headTitle15.add("行为");
            headTitle15.add("游戏");
            headTitle15.add("<30分钟");
            headTitle15.add("新用户");
            //第16列
            headTitle16.add("行为");
            headTitle16.add("游戏");
            headTitle16.add("<30分钟");
            headTitle16.add("老用户");
            //第17列
            headTitle17.add("行为");
            headTitle17.add("游戏");
            headTitle17.add(">30分钟");
            headTitle17.add("新用户");
            //第18列
            headTitle18.add("行为");
            headTitle18.add("游戏");
            headTitle18.add(">30分钟");
            headTitle18.add("老用户");
            //===============行为-语音==================
            //第19列
            headTitle19.add("行为");
            headTitle19.add("语音");
            headTitle19.add("<30分钟");
            headTitle19.add("新用户");
            //第20列
            headTitle20.add("行为");
            headTitle20.add("语音");
            headTitle20.add("<30分钟");
            headTitle20.add("老用户");
            //第21列
            headTitle21.add("行为");
            headTitle21.add("语音");
            headTitle21.add(">30分钟");
            headTitle21.add("新用户");
            //第22列
            headTitle22.add("行为");
            headTitle22.add("语音");
            headTitle22.add(">30分钟");
            headTitle22.add("老用户");
           
            headList.add(headTitle1);
            headList.add(headTitle2);
            headList.add(headTitle3);
            headList.add(headTitle4);
            headList.add(headTitle5);
            headList.add(headTitle6);
            headList.add(headTitle7);
            headList.add(headTitle8);
            headList.add(headTitle9);
            headList.add(headTitle10);
            headList.add(headTitle11);
            headList.add(headTitle12);
            headList.add(headTitle13);
            headList.add(headTitle14);
            headList.add(headTitle15);
            headList.add(headTitle16);
            headList.add(headTitle17);
            headList.add(headTitle18);
            headList.add(headTitle19);
            headList.add(headTitle20);
            headList.add(headTitle21);
            headList.add(headTitle22);
            table.setHead(headList);
            List<List<Object>> list = new ArrayList<>();
            excelWriter.write(list, sheet, table);
            // 记得 释放资源
            excelWriter.finish();
            System.out.println("ok");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

 

posted @ 2021-10-22 20:26  听风是雨  阅读(3508)  评论(0编辑  收藏  举报
/* 看板娘 */