springboot 结合easyexcel实现动态表头的方法

2023-11-14

在这里插入图片描述

package com.yili.survey.excel;

import com.alibaba.excel.EasyExcel;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;

/**
 * 类名称:ExcelTest
 * 描述:
 * 创建人:赵英杰
 * 创建时间:2023-09-05 11:17
 */
@SpringBootTest(classes = ExcelTest.class)
public class ExcelTest {

    @Value("${static.temp}")
    private String surveyLocalPath;

    @Test
    void test() {
        dynamicHeadWrite();
    }

    /**
     * 数据
     *
     * @return {@link List }<{@link List }<{@link String }>>
     * @author ZhaoYingJie
     * @date 2023-09-05 14:24:22
     */
    private List<List<String>> data() {

        List<List<String>> data = new ArrayList<>();
        List<String> row1 = new ArrayList<>();
        row1.add("喜欢吃苹果的数量");
        row1.add("10");
        row1.add("5");
        data.add(row1);

        List<String> row2 = new ArrayList<>();
        row2.add("喜欢吃西瓜的数量");
        row2.add("8");
        row2.add("3");
        data.add(row2);
        return data;
    }

    /**
     * 动态头,实时生成头写入
     * <p>
     * 思路是这样子的,先创建List<String>头格式的sheet仅仅写入头,然后通过table 不写入头的方式 去写入数据
     *
     * <p>
     * 1. 创建excel对应的实体对象
     * <p>
     * 2. 然后写入table即可
     */
    private void dynamicHeadWrite() {
        // 获取保存路径
        String path = surveyLocalPath;
        // 设置文件名
        String fileName = path + "test_excel.xls";
        EasyExcel.write(fileName)
                // 这里放入动态头
                .head(head()).sheet("模板")
                // 当然这里数据也可以用 List<List<String>> 去传入
                .doWrite(data());
    }

    /**
     * 头
     *
     * @return {@link List }<{@link List }<{@link String }>>
     * @author ZhaoYingJie
     * @date 2023-09-05 14:24:04
     */
    private List<List<String>> head() {
        List<List<String>> list = new ArrayList<>();
        List<String> head0 = new ArrayList<>();
        head0.add("Q1喜欢吃什么");
        head0.add("Q1");
        List<String> head1 = new ArrayList<>();
        head1.add("Q1喜欢吃什么");
        head1.add("Q1");
        List<String> head2 = new ArrayList<String>();
        head2.add("Q2喜欢吃什么_苹果");
        head2.add("Q2_1");
        List<String> head3 = new ArrayList<String>();
        head3.add("Q2喜欢吃什么_苹果");
        head3.add("Q2_1");
        List<String> head4 = new ArrayList<String>();
        head4.add("Q2喜欢吃什么_西瓜");
        head4.add("Q2_2");
        List<String> head5 = new ArrayList<String>();
        head5.add("Q2喜欢吃什么_西瓜");
        head5.add("Q2_2");

        list.add(head0);
        list.add(head1);
        list.add(head2);
        list.add(head3);
        list.add(head4);
        list.add(head5);
        return list;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot 结合easyexcel实现动态表头的方法 的相关文章

随机推荐

  • 【R语言】实验四 数据分析

    系列文章目录 实验一 R 语言数据结构 数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1 hospital data 数据集 数据是关于一些医院的基础信息 数据包含
  • 如何降低APP卸载率?这里有七个方法

    如何降低APP卸载率 这里有七个方法 A A admin 2017 年 1 月 19 日 0 597 次浏览 业内资讯 APP卸载率 现在移动应用市场红海一片 获取用户越来越难 但据了解 更让开发者们为难的是 产品的高卸载率 高卸载率是用户
  • Spring事务及事务失效的部分场景

    简介 spring 有五个事务隔离级别 ISOLATION DEFAULT ISOLATION READ UNCOMMITTED ISOLATION READ COMMITTED ISOLATION REPEATABLE READ ISOL
  • 毕业设计 单片机农业土壤酸度检测系统

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 土壤酸碱度传感器 土壤pH传感器与Arduino的硬件连接 5 软件说明 土壤pH传感器的Arduino代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难
  • Javascript--位运算符

    文章转载自 http www cnblogs com oneword archive 2009 12 23 1631039 html 1 NOT 位运算符NOT由 表示 NOT运算符的实质是对数字求负 然后减1 位运算符NOT是三步的处理过
  • LeetCode(力扣)455. 分发饼干Python

    LeetCode20 有效的括号 题目链接 代码 题目链接 https leetcode cn problems assign cookies 代码 从大遍历 class Solution def findContentChildren s
  • 华为/荣耀 Magicbook/Matebook 开机经常弹出华为智能还原

    问题描述 今年开始 笔者的Magicbook开机时就会弹出华为智能还原 如下所示 检测之后显示是正常的 于是每次都点退出 退出之后就进入了正常的Win10桌面 但是发现 笔记本电脑存在以下问题 有线网络无法连接 网络里面只有无线WiFi可以
  • Nginx教程:配置TCP/IP转发

    安装nginx服务 检查是否编译时带with stream参数 nginx V grep with stream 有with stream参数 可以代理tcp协议 配置nginx的tcp代理 请注意 stream块和http块是两个不同的模
  • python和易语言的脚本哪门更实用?

    前言 每天我们都会面临许多需要高级的编程挑战 你不能用简单的 Python 基本语法来解决这些问题 在本文中 我将分享 13 个高级 Python 它们可以成为你项目中的便捷工具 如果你目前还用不到这些脚本 你可以先添加收藏 以备留用 文末
  • 使用cesium给地图实例添加精灵图图标

    前置条件 1 将精灵图存放在本地文件中 2 拿到对应的声明文件 该文件中存放了每一个类型的地图实例对应的图标在精灵图中的位置 我这里是json文件 这是某一个实例模型对应的数据 我的做法是 系统登录之后 就掉接口获取到该json文件 并存储
  • 云安全技术——Snort安装与配置

    目录 一 Snort简介 二 安装Centos7 Minimal系统 三 基本环境配置 四 安装Snort 五 下载规则 六 配置Snort 七 测试Snort 一 Snort简介 Snort是一个开源的网络入侵检测系统 主要用于监控网络数
  • 二叉排序树的基本操作

    二叉排序树的应用 利用二叉链表存储二叉排序树 输入一组任意序列 实现二叉排序树的创建 插入 删除 中序遍历 要求 有菜单进行选择 安排 2020 6 4 晴朗 二叉排序树的基本定义 1 左子树的所有节点小于根节点 2 若右子树非空 则右子树
  • NANDFlash-W25N01GVZEIG的学习笔记

    文章目录 一 NAND Flash和NOR Flash 二 W25N01GVZEIG引脚说明 三 SPI配置 四 W25N01GVZEIG的架构和寻址 五 W25N01GVZEIG的指令码 六 W25N01GVZEIG各个指令的解析 一 D
  • PCA 解决 多重共线性问题

    PCA 解决 多重共线性问题 学习链接 link 多重共线性是指自变量彼此相关的一种情况 当你拟合模型并解释结果时 多重共线性可能会导致问题 数据集的变量应该是相互独立的 以避免出现多重共线性问题 线性回归中 多重共线性识别 计算每一个自变
  • mac 版 Nginx 的使用及 web 项目的实际部署--最简单的方式

    1 电脑是否已经安装了 brew 1 1 终端输入指令 which brew 如果显示如下图 则证明已安装 如果未安装 终端执行如下指令 bin bash c curl fsSL https raw githubusercontent co
  • qt 绘图QPainter

    QPainter绘图系统 QPainter用来进行绘图操作的类 绘图设备一般包括Qwidget Qpixmap QImage 他们提供给QPainter画布 QPaintDevice是一个可以使用QPainter进行绘图的抽象二维界面 QP
  • 易观千帆

    易观 2023年3月证券服务应用活跃人数14131 58万人 相较上月 环比增长0 61 同比增长0 60 2023年3月自营类证券服务应用Top10 活跃人数6221 44万人 环比增长0 08 2023年3月第三方证券服务应用Top10
  • 【vue】 el-table解决分页不能筛选全部数据的问题

    前言 最近开发前端项目表格的时候 使用的是el table 用到了对应的筛选功能 如下图所示 但发现实际只能筛选当前页 通过百度查找相关文章 发现原因是把筛选条件定义在列上 解决方法 所以我们把filter change绑定在最外部即el
  • Merry Christmas

    N久没有更新 决定还是在多灾多难的2008年的圣诞节留个脚印吧 新房已入住3个月零17天
  • springboot 结合easyexcel实现动态表头的方法

    package com yili survey excel import com alibaba excel EasyExcel import org junit jupiter api Test import org springfram