zoukankan      html  css  js  c++  java
  • 【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();
            }
    
        }
  • 相关阅读:
    [学习笔记] numpy次成分分析和PCA降维
    [论文理解]关于ResNet的进一步理解
    [Pytorch] pytorch笔记 <三>
    [pytorch] 官网教程+注释
    [Pytorch] pytorch笔记 <二>
    [图像处理] 直方图均衡化原理
    [Markdown] 数学公式
    [Pytorch] pytorch笔记 <一>
    [pytorch] Pytorch入门
    [Python]面向对象近期笔记-super
  • 原文地址:https://www.cnblogs.com/july-sunny/p/15440521.html
Copyright © 2011-2022 走看看