java中使用easyexcel框架自定义格式写入excel

2023-05-16

    一般的excel示例,都是写入列表数据到excel,格式上有表头,内容使用List集合来填充。今天遇到的需求有点不一样,它也是需要写入excel,但是开头的内容并不是列表,而是一个类似于摘要的部分,后面才是表格。大致结构如下:

    

 

    这个需求,就没有办法使用常见的excel操作了。解决办法就是使用模板来填充。我们需要建立一个excel模板文件,变化的部分使用占位符。

    如下所示,我们建立一个模板文件:

    模板中,前面部分可以使用map的数据来填充,所以占位符是这样{checkTime}。后面的循环列表部分使用{.name},{.result},{.desc}来填充。

    上代码:

    pom.xml

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel-core</artifactId>
	<version>3.2.1</version>
</dependency>

    列表实体类:


import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class CheckRecord {
    private String name;
    private String result;
    private String desc;
}

    测试类:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class RecordExportTest {

    private static final String RECORD_TEMPLATE = "conf/record-template.xlsx";

    public static void main(String[] args) {
        String filePath = "e:\\record-" + System.currentTimeMillis() + ".xlsx";
        Map<String, Object> summary = new HashMap<>();
        summary.put("checkTime", "2023-04-18");
        summary.put("checkResult", "success");
        summary.put("versionInfo", "v1.0.0");
        List<CheckRecord> list = new ArrayList<>();
        list.add(new CheckRecord("disk status", "success", "磁盘状态"));
        list.add(new CheckRecord("network status", "success", "网络状态"));
        boolean isOk = saveData(filePath, summary, list);
        System.out.println("write excel : " + isOk);
    }

    private static boolean saveData(String filePath, Map<String, Object> summary, List<CheckRecord> list) {
        try (ExcelWriter excelWriter = EasyExcel.write(filePath).withTemplate(RECORD_TEMPLATE).build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
            excelWriter.fill(list, fillConfig, writeSheet);
            excelWriter.fill(summary, writeSheet);
            excelWriter.finish();
        }
        return true;
    }
}

    把前面准备的record-template.xlsx文件按照代码需要放入项目conf目录下,然后运行示例,生成的excel文件如下:

 

 

    有了这样的模板填充,我们的excel可以制作的更复杂。 

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

java中使用easyexcel框架自定义格式写入excel 的相关文章

随机推荐

  • java中flatMap用法

    java中map是把集合每个元素重新映射 xff0c 元素个数不变 xff0c 但是元素值发生了变化 而flatMap从字面上来说是压平这个映射 xff0c 实际作用就是将每个元素进行一个一对多的拆分 xff0c 细分成更小的单元 xff0
  • excel中设置下拉选择框和word文档中插入外部excel只显示图标

    这篇文章介绍两个和excel相关的主题 xff0c 一个是对excel表格设置下拉框 xff0c 另一个是在word文档中插入外部excel xff0c 但是我们不想展示excel的内容 xff0c 而是展示一个图标 xff0c 点击图标
  • snakeyaml自定义pojo写入yml文件时属性字段排序问题

    snakeyaml采用LinkedHashMap保存对象 xff0c 最后写入yml文件的时候 xff0c 可以按照存入的顺序写入yml xff0c 如果采用自定义pojo xff0c 虽然可以写入yml xff0c 但是属性默认是按照字母
  • microsoft store打开加载失败,显示检查连接

    如题所示 xff0c 微软商店 microsoft store打开 xff0c 页面显示空白 xff0c 提示检查连接 xff0c 如下所示 xff1a 这种问题其实是网络设置不正确 xff0c 我们通过控制面板打开 网络和Internet
  • SpringBoot配置静态资源访问办法

    SpringBoot如果是web项目 xff0c 其实默认静态资源是放在resources static 目录下的 这个静态资源其实隐含了一个配置就是spring mvc static path pattern xff0c 如下所示 xff
  • Java服务导致CPU爆表异常排查

    一 前言 之前的博客有提到过面对Tomcat部署的java服务出现内存溢出该如何定位 xff0c 今天来记录下Tomcat部署的java服务出现CPU爆表的事故该如何定位 二 正文 针对Linux系统在处理CPU爆满时会有相关指令可以一步到
  • win10+python3.6+cuda9+pytorch1.1.0安装

    为了让torch可以使用显卡GPU加速 xff0c 需要安装对应版本的cudatoolkit和pytorch 这里我的nvidia显卡驱动是9 1版本 xff0c 只能安装cudatoolkit9 一般支持gpu加速的显卡大部分都是英伟达n
  • vmware虚拟机与树莓派4B安装ubuntu1804 + ros遇到的问题

    如题所示 xff0c 本人在虚拟机上安装ubuntu1804 xff0c 可以很容易安装 xff0c 并且更换系统apt源和ros源 xff0c 然后安装ros xff0c 非常顺利 xff0c 但是在树莓派4B上安装raspiberry系
  • python中Flask项目启动静态资源访问问题

    flask项目启动 xff0c 会监听默认的5000端口 xff0c 这个时候 xff0c 在项目根路径下有一个默认的文件夹static xff0c 是用来存放静态资源的 xff0c 我们启动项目 xff0c 可以直接访问这个目录里面的静态
  • java混淆框架proguard结合springboot项目混淆打包

    java项目一般是打包成jar运行或者作为依赖给第三方使用的 xff0c 有的时候 xff0c 可能不想被别人反编译 xff0c 于是就对关键部分进行混淆 xff0c 让代码变得普通人看不懂的地步 xff0c 很多关键字和变量都是用单个字母
  • java中Runtime.exec()可能带来的命令注入安全问题的解决办法

    我们在使用Runtime getRuntime exec 的时候 xff0c 可以指定一个命令或者脚本 xff0c 让它执行 xff0c 类似于调用系统指令来进行完成一项任务 但是这个方法如果有安全检查 xff0c 它会被报出一个Comma
  • springboot自帶线程池ThreadPoolTaskExecutor使用

    不管是阿里 xff0c 还是华为java开发手册 xff0c 都会有一条建议 xff0c 就是让开发者不要使用Executors去创建线程池 xff0c 而是使用构造函数ThreadPoolExecutor的方式来创建 xff0c 并设置合
  • windows下postgresql安装timescaledb

    timescaledb是一个时序数据库 xff0c 可以创建超表hypertable 它并不是一个独立的数据库 xff0c 它依赖于postgresql xff0c 目前相当于postgresql的一个插件或者扩展 要安装timescale
  • windows下sonarqube+sonar-runner安装记录

    sonarqube是一套代码质量管理工具系统 xff0c sonar runner是一个静态扫描代码的工具 xff0c 它可以把扫描的结果交给sonarqube来管理 这里安装的sonarqube版本比较老旧5 1 2 xff0c 因为我安
  • windows上nacos源码编译安装

    nacos是阿里巴巴旗下的一款类似dubbo的微服务注册与发现中心 xff0c 现在很多地方都在使用这个新的框架作为微服务注册中心 nacos本质还是一个rpc框架 xff0c 但是它更强大 xff0c 它还支持配置管理 这里来学习naco
  • java通过URLClassLoader类加载器加载外部jar

    相信在实际工作中 xff0c 大家可能会遇到这种需求 xff0c 这个jar是外部的 xff0c 并没有添加到项目依赖中 xff0c 只能通过类加载器加载并调用相关方法 这种jar加载 xff0c 其实也简单 xff0c 我们通过普通的UR
  • Java服务调用系统指令、Bat脚本记录

    一 前言 在项目推进过程中偶尔会涉及到调用其它组件或脚本的需求 xff0c 本文重点介绍Java服务调用Bat脚本 系统指令 二 调用Bat脚本 根据需求生成BAT脚本内容文本 xff0c 通过文件流写入到新建的BAT文件中 xff0c 然
  • 蓝桥杯单片机开发板-数码管静态显示

    本次的博客会详细的讲解每一部分的代码 首先放本博客所涉及到的电路结构 上图为M74HC573的所控制的数码管显示电路 下图为74HC138的片选电路 电路的逻辑为 通过74HC138来控制74HC02与非门进行逻辑控制 通过74HC02的输
  • 目标检测框架yolov5环境搭建

    目前 xff0c 目标检测框架中 xff0c yolov5 是很火的 xff0c 它基于pytorch框架 xff0c 集成opencv等框架 xff0c 项目地址 xff1a https github com ultralytics yo
  • java中使用easyexcel框架自定义格式写入excel

    一般的excel示例 xff0c 都是写入列表数据到excel xff0c 格式上有表头 xff0c 内容使用List集合来填充 今天遇到的需求有点不一样 xff0c 它也是需要写入excel xff0c 但是开头的内容并不是列表 xff0