• 单组数据填充
    可以填充一个对象或一个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使用模板文件填充数据相关推荐

  1. 【Java结合EasyExcel,模板文件填充并导出Excel】

    需求描述: 客户网页上填一个Excel表格,数据存到数据库,这个导出接口要做的就是从数据库中的获取数据并填充到模板文件,最后通过response返给前端一个下载链接,用户即可获取填充好的Excel文件 ...

  2. 「实战教程」如何使用POI读取模板PPT填充数据并拼接至目标文件

    文章目录 一.PPT文件格式介绍 1.PPT文件格式的概述 2.HSLF和XSLF的区别 3.如何选择合适的POI类库 二.SlideShow 三.读取PPT文件 1. 加载PPT文件 2. 获取PP ...

  3. java实现word模板文件填充

    核心 import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 使用该包实现 word 文件填充,同时支持 pdf.excel ...

  4. 利用docxtpl库将excel里的数据向一个word模板里填充数据,并保存为一个word文档

    ###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档. from docxtpl import DocxTemplate import openpyx ...

  5. 使用EasyExcel实现模板下载、数据导入功能

    这里是在springboot项目下使用EasyExcel实现模板下载.数据导入功能. 顺便记录下自己遇到的一些坑. 一.模板下载 1.在你的工程下添加模板文件 2.编写代码实现下载功能 control ...

  6. 使用POI读取EXCEL模板并填充数据,上传至腾讯云储存桶

    读取EXCEL模板,并填充数据生成文件 前言 一.POI导入 二.具体实现 1.制作我们的模板 2.读取模板来生成新的EXCEL 3.查看生成结果 三,传到腾讯云储存桶里 1.导入COS依赖 2.写个 ...

  7. 导出excel:下载模板时填充数据方法实现

        /**      * 导出excel      * @param model      * @param request      * @param userAgent      * @par ...

  8. 使用POI根据合同定义模板生成新的模板并且填充数据(包括图片)

    word文档中,需要填充数据的地方统一使用变量的形式,格式如下:${变量名}. 注意:变量"${变量名}"建议先在记事本中写好,再粘贴到"XXX合同.docx" ...

  9. Java 将xml模板动态填充数据转换为word文档

    需要用到的jar包: commons-codec-1.10.jar freemarker-2.3.21.jar jacob-1.6.jar 实现思路: 1.先将word文档另存为 : Word 200 ...

最新文章

  1. 基于Python的MORSE音频的波形和频谱(二)
  2. MongoDB(7.mongodb中创建索引)
  3. Aop动态代理解决问题
  4. 递归算法的时间复杂度分析
  5. jpa 多字段like_Spring Date jpa 多个like匹配查询基础问题?
  6. 根据word模版导入word中用户填写的数据
  7. hibernate4.3 无法获取数据库最新值
  8. outlook 2010邮件传输接口错误解决一例
  9. 自己做的小游戏希望大家能喜欢
  10. 自然语言处理(NLP)-第三方库(工具包):AllenNLP【用于构建各种NLP模型的库;基于PyTorch】
  11. matlab转置的问题
  12. 正则验证邮箱格式是不是正确
  13. 解决ERROR: text file '***' contains disallowed UTF-8 whitespace character(s)
  14. 商业web 漏洞扫描神器———AWVS篇基础
  15. 四色建模法 模型分析和设计
  16. 2020CCFBDCI训练赛之通用音频分类baseline
  17. PUMA 560 机器人构型总结
  18. JAVA中将图片转化为圆形图片
  19. 桌面计算机没有了 怎么恢复,告诉你电脑桌面图标都没了怎么恢复
  20. 第一次整理 数学建模入门 小石老师

热门文章

  1. 【电竞数据】接口调用范例代码-联赛数据
  2. 基于vagrant 给虚拟机配一个共享文件夹
  3. jexus docker
  4. ios修改apn的插件_Apple苹果手机iOS设置APN详解
  5. 2022-03-09 Unity 3D两个场景的切换
  6. 周易之二十一—噬嗑卦
  7. python教程七牛云_使用Python实现数据从七牛云到阿里云的自动化迁移
  8. Docker上配置Redis集群时出现No more cluster attempts left.
  9. Android 模拟器 IP问题
  10. 微信无法下载APP的解决方案 : IOS自动跳转商店(App Store)安卓自动跳转手机默认浏览器下载