EasyExcel使用模板文件填充数据
- 单组数据填充
可以填充一个对象或一个Map,单组数据填充时模板为{ xxx } ,xxx为对象的属性名或Map的key
测试代码:
/*** 使用模板单组数据填充*/@Testpublic void test01(){//准备模板String template = "fill_data_template1.xlsx";ExcelWriterBuilder builder = EasyExcel.write("Execl-填充单组数据.xlsx", FillData.class).withTemplate(template);FillData fillData = new FillData();fillData.setAge(20);fillData.setName("Hello");//准备map数据Map<String,String> map=new HashMap<>();map.put("name","zs");map.put("number","50");// builder.sheet().doFill(fillData);builder.sheet().doFill(map);}
注意:如果{}不需要转义,则需要用 \ 转义。
- 多组数据填充
多组数据填充需要在{}前加 ‘.’如
测试代码:
/*** 多组数据填充 需要在模板的占位符中前加 '.'*/@Testpublic void test02(){String template = "fill_data_template2.xlsx";ExcelWriterBuilder writerBuilder = EasyExcel.write("Excel-填充多组数据.xlsx", FillData.class).withTemplate(template);List<FillData> fillData = initData();writerBuilder.sheet().doFill(fillData);}
- 复合填充
现在是先填充多组数据,再最后这一行填充单组数据。这时需要分开填充,自己创建WorkBook和Sheet。
测试代码:
/*** 既能填充多组数据,又能填充单个数据*/@Testpublic void test03(){String template = "fill_data_template3.xlsx";//工作薄对象ExcelWriter workBook = EasyExcel.write("Excel-填充单组和多组数据.xlsx", FillData.class).withTemplate(template).build();//工作区对象WriteSheet sheet = EasyExcel.writerSheet().build();Map<String,String> map = new HashMap<>();List<FillData> fillData = initData();// FillConfig build = FillConfig.builder().forceNewRow(true).build();//填充单个数据map.put("date","2020-12-18");map.put("total",fillData.size() + "");//使用工作薄对象填充数据
// workBook.fill(fillData,build,sheet);
// workBook.fill(map,build,sheet);workBook.fill(fillData,sheet);workBook.fill(map,sheet);workBook.finish();}
发现填充数据错误,第三行的数据被单组数据填充了。
解决方法:
1. 每行数据填充完换行
2. 将单组数据占位符放至最前,填充完单组数据再填充多组数据
每行数据填充完换行测试代码:
@Testpublic void test03(){String template = "fill_data_template3.xlsx";//工作薄对象ExcelWriter workBook = EasyExcel.write("Excel-填充单组和多组数据.xlsx", FillData.class).withTemplate(template).build();//工作区对象WriteSheet sheet = EasyExcel.writerSheet().build();Map<String,String> map = new HashMap<>();List<FillData> fillData = initData();FillConfig build = FillConfig.builder().forceNewRow(true).build();//填充单个数据map.put("date","2020-12-18");map.put("total",fillData.size() + "");//使用工作薄对象填充数据workBook.fill(fillData,build,sheet);workBook.fill(map,build,sheet);
// workBook.fill(fillData,sheet);
// workBook.fill(map,sheet);workBook.finish();}
此时已经正确填充
- 水平填充
测试代码
/*** 测试水平填充*/@Testpublic void test04(){String template = "fill_data_template4.xlsx";//工作薄对象ExcelWriter workBook = EasyExcel.write("Excel-水平填充.xlsx", FillData.class).withTemplate(template).build();//工作区对象WriteSheet sheet = EasyExcel.writerSheet().build();Map<String,String> map = new HashMap<>();List<FillData> fillData = initData();// 设置水平填充FillConfig build = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();//填充单个数据map.put("date","2020-12-18");map.put("total",fillData.size() + "");//使用工作薄对象填充数据workBook.fill(fillData,build,sheet);workBook.fill(map,build,sheet);workBook.finish();}
- 综合测试
先单组数据填充,再多组数据填充
/*** 测试复杂组合,当有复合填充时,如果单组和填充在多组合填充的下面,则会被覆盖,如模板3** 否则要将其放在多组合填充上面,先把单组合填充完成,再填充多组合,这样就不会覆盖**/@Testpublic void test05(){String template = "report_template.xlsx";//创建workBookExcelWriter workBook = EasyExcel.write("Excel-综合填充.xlsx", FillData.class).withTemplate(template).build();//创建SheetWriteSheet sheet = EasyExcel.writerSheet().build();//准备单组和数据Map<String,String> map = new HashMap<>();map.put("date","2020-01-01");map.put("increaseCount","60");map.put("increaseCountWeek","7");map.put("totalCount","151");map.put("increaseCountMonth","22");List<User> users = initUsers();workBook.fill(map,sheet);workBook.fill(users,sheet);workBook.finish();}
效果图:
这里没有被覆盖的原因是模板数据的单组数据写在了上面
EasyExcel使用模板文件填充数据相关推荐
- 【Java结合EasyExcel,模板文件填充并导出Excel】
需求描述: 客户网页上填一个Excel表格,数据存到数据库,这个导出接口要做的就是从数据库中的获取数据并填充到模板文件,最后通过response返给前端一个下载链接,用户即可获取填充好的Excel文件 ...
- 「实战教程」如何使用POI读取模板PPT填充数据并拼接至目标文件
文章目录 一.PPT文件格式介绍 1.PPT文件格式的概述 2.HSLF和XSLF的区别 3.如何选择合适的POI类库 二.SlideShow 三.读取PPT文件 1. 加载PPT文件 2. 获取PP ...
- java实现word模板文件填充
核心 import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 使用该包实现 word 文件填充,同时支持 pdf.excel ...
- 利用docxtpl库将excel里的数据向一个word模板里填充数据,并保存为一个word文档
###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档. from docxtpl import DocxTemplate import openpyx ...
- 使用EasyExcel实现模板下载、数据导入功能
这里是在springboot项目下使用EasyExcel实现模板下载.数据导入功能. 顺便记录下自己遇到的一些坑. 一.模板下载 1.在你的工程下添加模板文件 2.编写代码实现下载功能 control ...
- 使用POI读取EXCEL模板并填充数据,上传至腾讯云储存桶
读取EXCEL模板,并填充数据生成文件 前言 一.POI导入 二.具体实现 1.制作我们的模板 2.读取模板来生成新的EXCEL 3.查看生成结果 三,传到腾讯云储存桶里 1.导入COS依赖 2.写个 ...
- 导出excel:下载模板时填充数据方法实现
/** * 导出excel * @param model * @param request * @param userAgent * @par ...
- 使用POI根据合同定义模板生成新的模板并且填充数据(包括图片)
word文档中,需要填充数据的地方统一使用变量的形式,格式如下:${变量名}. 注意:变量"${变量名}"建议先在记事本中写好,再粘贴到"XXX合同.docx" ...
- Java 将xml模板动态填充数据转换为word文档
需要用到的jar包: commons-codec-1.10.jar freemarker-2.3.21.jar jacob-1.6.jar 实现思路: 1.先将word文档另存为 : Word 200 ...
最新文章
- 基于Python的MORSE音频的波形和频谱(二)
- MongoDB(7.mongodb中创建索引)
- Aop动态代理解决问题
- 递归算法的时间复杂度分析
- jpa 多字段like_Spring Date jpa 多个like匹配查询基础问题?
- 根据word模版导入word中用户填写的数据
- hibernate4.3 无法获取数据库最新值
- outlook 2010邮件传输接口错误解决一例
- 自己做的小游戏希望大家能喜欢
- 自然语言处理(NLP)-第三方库(工具包):AllenNLP【用于构建各种NLP模型的库;基于PyTorch】
- matlab转置的问题
- 正则验证邮箱格式是不是正确
- 解决ERROR: text file '***' contains disallowed UTF-8 whitespace character(s)
- 商业web 漏洞扫描神器———AWVS篇基础
- 四色建模法 模型分析和设计
- 2020CCFBDCI训练赛之通用音频分类baseline
- PUMA 560 机器人构型总结
- JAVA中将图片转化为圆形图片
- 桌面计算机没有了 怎么恢复,告诉你电脑桌面图标都没了怎么恢复
- 第一次整理 数学建模入门 小石老师
热门文章
- 【电竞数据】接口调用范例代码-联赛数据
- 基于vagrant 给虚拟机配一个共享文件夹
- jexus docker
- ios修改apn的插件_Apple苹果手机iOS设置APN详解
- 2022-03-09 Unity 3D两个场景的切换
- 周易之二十一—噬嗑卦
- python教程七牛云_使用Python实现数据从七牛云到阿里云的自动化迁移
- Docker上配置Redis集群时出现No more cluster attempts left.
- Android 模拟器 IP问题
- 微信无法下载APP的解决方案 : IOS自动跳转商店(App Store)安卓自动跳转手机默认浏览器下载