EasyExcel 通过模板填充数据
EasyExcel 通过模板填充数据两种方式:1、直接通过模板填充。2、通过IO流填充。
模板示例
注意:单个字段填充只写字段名即可,数据集填充需要在字段前加 .
| {title} | ||
|---|---|---|
| 姓名 | 昵称 | 手机号 |
| {.username} | {.nickname} | {.phone} |
代码示例:
package com.service.single.example.excel;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.service.single.entity.SystemUser;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: 一休
* @Date: 2025/2/10
*/
public class ExcelTemplate {
public static void main(String[] args) throws IOException {
// 准备数据
List<SystemUser> users = new ArrayList<>();
SystemUser user1 = new SystemUser();
user1.setUsername("张三");
user1.setNickname("zhangsan");
user1.setPhone("11111");
users.add(user1);
SystemUser user2 = new SystemUser();
user2.setUsername("张三");
user2.setNickname("zhangsan");
user2.setPhone("11111");
users.add(user2);
// 单个字段填充,使用map格式
Map<String, Object> otherData = new HashMap<>();
otherData.put("title", "系统用户表");
// 模板文件路径
String templateFileName = "src/main/resources/template.xlsx";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String formattedDateTime = LocalDateTime.now().format(formatter);
// 输出文件路径
String outputFileName = "src/main/resources/filled_template_" + formattedDateTime + ".xlsx";
// 输出文件路径
String outputFileName1 = "src/main/resources/filled_template1_" + formattedDateTime + ".xlsx";
// 1、直接通过文件模板填充
try (ExcelWriter excelWriter = EasyExcel.write(outputFileName).withTemplate(templateFileName).build();) {
// 创建写入工作表
WriteSheet writeSheet = EasyExcel.writerSheet().build();
// 每次使用 list 参数时创建新行。
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
// 针对某个字段填充
excelWriter.fill(otherData, fillConfig, writeSheet);
// 填充集合
excelWriter.fill(users, fillConfig, writeSheet);
}
// 2、通过IO流填充
try (
// 使用 try-with-resources 管理输入流
InputStream inputStream = Files.newInputStream(Paths.get(templateFileName));
InputStream templateInputStream = new BufferedInputStream(inputStream);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()
) {
try (
// 创建 ExcelWriter 对象
ExcelWriter excelWriter = EasyExcelFactory.write(outputStream).excelType(ExcelTypeEnum.XLSX).withTemplate(templateInputStream).build()
) {
WriteSheet writeSheet = EasyExcelFactory.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
// 针对某个字段填充
excelWriter.fill(otherData, fillConfig, writeSheet);
// 填充集合
excelWriter.fill(users, fillConfig, writeSheet);
}
try (
FileOutputStream fileOutputStream = new FileOutputStream(outputFileName1)
) {
outputStream.writeTo(fileOutputStream);
// 刷新 FileOutputStream 缓冲区,确保数据全部写入文件
fileOutputStream.flush();
System.out.println("文件生成成功: " + outputFileName1);
}
}
}
}
EasyExcel 通过模板填充数据的更多相关文章
- 用NPOI从DataTable到Excel,向Excel模板填充数据
DataTable---->Excel,填充数据 private IWorkbook workbook = null; private ISheet sheet = null; private ...
- Freemarker取list集合中数据(将模板填充数据后写到客户端HTML)
1.模板写法: <html> <head> <title>freemarker测试</title> </head> <body> ...
- 根据EXCEL模板填充数据
string OutFileName = typeName+"重点源达标率" + DateTime.Now.ToString("yyyy-MM-dd"); ...
- 读取excel模板填充数据 并合并相同文本单元格
try { string OutFileName = "北京市国控企业污染源废气在线比对监测数据审核表" + DateTime.Now.ToString(& ...
- POI3.10读取Excel模板填充数据后生成新的Excel文件
private final DecimalFormat df = new DecimalFormat("#0.00"); public void test(){ String fi ...
- 尝试做一个.NET模板填充导出Excel工具
园友好,最近晚辈延续上篇后尝试进阶做成Excel模板填充数据生成工具 MiniExcel Template. 主要特点 同样以Stream流.延迟查询避免全部数据载入内存情况,做到1GB内存降低到只需 ...
- 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率
原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...
- Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行
Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行 模版格式,图格式是最简单的格式,但实际效果不是这种,实际效果图如图2 图2 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...
- Net 自定义Excel模板导出数据
转载自:http://www.cnblogs.com/jbps/p/3549671.html?utm_source=tuicool&utm_medium=referral 1 using Sy ...
- python-Word模板填充-docxtpl
docxtpl 按指定的word模板填充内容 安装 pip install docxtpl 示例 from docxtpl import DocxTemplate data_dic = { 't1': ...
随机推荐
- Helm部署SkyWalking
一 . 部署ElasticSearch 1.下载安装包 helm repo add elastic https://helm.elastic.cohelm pull elastic/elasticse ...
- 覆盖全品类数据,腾讯云COS内容审核全新上线
今年,国家网信办深入推进"清朗·春节网络环境"专项行动.截至3月24日,网信办共累计清理相关违法违规信息208万余条,处置账号7.2万余个,协调关闭.取消备案网站平台2300余家. ...
- 【前端】【H5 API】地理定位(获取经纬度)
H5 API 地理定位 地理定位在日常生活中应用比较广泛,例如,互联网打车.在线地图等.在HTML 5的规范中,增加了获取用户地理位置信息的接口Geolocation,开发者可以通过经纬度来获取用户的 ...
- springboot连接mysql报错errorCode 0, state 08S01
前言许久未维护的项目需要检查一些数据,重新运行项目发现有create connection SQLException ,具体报错信息是 errorCode 0, state 08S01 . Sprin ...
- Qt通用方法及类库6
函数名 //判断是否是IP地址 static bool isIP(const QString &ip); //判断是否是MAC地址 static bool isMac(const QStrin ...
- DVWA靶场搭建及错误解决教程
前言 DVWA(Damn Vulnerable Web Application)靶场是一个旨在帮助安全人员和开发人员学习和提高网络安全技能的开源项目.它是一个故意存在多种安全漏洞的 PHP/MySQL ...
- [转]CMake:相关概念与使用入门
CMake:相关概念与使用入门(一) CMake:搜索文件和指定头文件目录(三) CMake 子工程添加 根目录中他文件夹里的cpp文件 翻译 搜索 复制
- Github无法访问解决办法
Github无法访问解决办法 问题描述:网速正常,但是github无法访问. 解决办法: 1.因为Github网址域名更换.查询网站https://ipchaxun.com/ ,例如输入github. ...
- TypeScript学习(二) - TypeScript的接口(interface)和类(class)
1. 对象的类型--接口 1.1 什么是接口 1.2 简单的例子 1.3 可选属性 1.4 任意属性 1.5 只读属性 2. 类 2.1 类的概念 2.2 ES6 中类的用法 属性和方法 类的继承 存 ...
- ThreeJs-11精通着色器编程(重难点)
着色器语言编程比较重要,后面的几个章节都会围绕这个来做特效 一.初识着色器语言 首先什么叫做着色器,他是一种语言,首先需要设置为着色器材质,然后在材质里面书写一些语言,可以告诉他顶点,然后去自定义一些 ...