EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。

今天根据官网(www.yuque.com/easyexcel/doc/read)指导,试了一个简单的填充例子,如下。

了解常见API的话,访问地址:常见api · 语雀 (yuque.com)。

填充效果如下图所示:

1.创建填充实体。

/*** 填充excel实体*/
@Data
public class FillData {private String name;private double number;
}

2.测试填充main方法。

public static void main(String[] args) {String templateFileName ="template.xlsx";String fileName = "fill.xlsx";/********简单填充,可以根据对象填充,也可以根据Map填充***********/// 方案1 根据对象填充// 这里会填充到第一个sheet, 然后文件流会自动关闭FillData fillData = new FillData();fillData.setName("张三");fillData.setNumber(5.2);EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(fillData);// 方案2 根据Map填充Map<String, Object> map = new HashMap<String, Object>();map.put("name", "张三");map.put("number", 5.2);EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(map);/********填充列表***********/// 方案1 一下子全部放到内存里面 并填充EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(data());// 方案2 分多次填充,会使用文件缓存(省内存)ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build();WriteSheet writeSheet = EasyExcel.writerSheet().build();excelWriter.fill(data(), writeSheet);excelWriter.fill(data(), writeSheet);// 千万别忘记关闭流excelWriter.finish();/********复杂填充***********/// 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。// forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用// 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存// 如果数据量大 list不是最后一行 参照下一个FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();excelWriter.fill(data(), fillConfig, writeSheet);excelWriter.fill(data(), fillConfig, writeSheet);map.put("date", "2019年10月9日13:28:28");map.put("total", 1000);excelWriter.fill(map, writeSheet);excelWriter.finish();/********数据量大的复杂填充***********/// 直接写入数据excelWriter.fill(data(), writeSheet);excelWriter.fill(data(), writeSheet);// 写入list之前的数据map.put("date", "2019年10月9日13:28:28");excelWriter.fill(map, writeSheet);// list 后面还有个统计 想办法手动写入// 这里可以直接用list,也可以用对象List<List<String>> totalListList = new ArrayList<List<String>>();List<String> totalList = new ArrayList<String>();totalListList.add(totalList);totalList.add(null);totalList.add(null);totalList.add(null);// 第四列totalList.add("统计:1000");// 这里是write 别和fill 搞错了excelWriter.write(totalListList, writeSheet);excelWriter.finish();// 总体上写法比较复杂 但是也没有想到好的版本 异步的去写入excel 不支持行的删除和移动,也不支持备注这种的写入,所以也排除了可以// 新建一个 然后一点点复制过来的方案,最后导致list需要新增行的时候,后面的列的数据没法后移,后续会继续想想解决方案/********横向填充***********/excelWriter.fill(data(), fillConfig, writeSheet);excelWriter.fill(data(), fillConfig, writeSheet);map.put("date", "2019年10月9日13:28:28");excelWriter.fill(map, writeSheet);// 别忘记关闭流excelWriter.finish();/********多列表组合填充***********/// 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 data1,然后多个list必须用 FillWrapper包裹excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet);excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet);excelWriter.fill(new FillWrapper("data2", data()), writeSheet);excelWriter.fill(new FillWrapper("data2", data()), writeSheet);excelWriter.fill(new FillWrapper("data3", data()), writeSheet);excelWriter.fill(new FillWrapper("data3", data()), writeSheet);map.put("date", "2019年10月9日13:28:28");excelWriter.fill(map, writeSheet);// 别忘记关闭流excelWriter.finish();}/*** 组装要导入的数据* @return*/private static List<ExportData> data() {List<ExportData> list = new ArrayList<ExportData>();for (int i = 0; i < 10; i++) {ExportData data = new ExportData();data.setString("字符串" + i);data.setDate(new Date());data.setDoubleData(0.56);list.add(data);}return list;}

EasyExcel的使用--填充excel相关推荐

  1. 阿里easyexcel通过模板导出excel

    easyexcel通过模板导出excel 之前使用其他方式进行excel的导出,像poi或者freemarker或者Beetl,效果都还行,但是总是有一些小问题.许多的解决思路都是:通过制作excel ...

  2. 【EasyExcel 教程】详解填充Excel -- 填充

    愿你如阳光,明媚不忧伤. 目録 5. 详解填充Excel 5.1 简单填充Excel 5.2 填充列表 5.3 复杂的填充 5.4 横向的填充 5.5 多列表组合填充 5. 详解填充Excel 5.1 ...

  3. 基于阿里巴巴EasyExcel实现对复杂Excel模板的填充

    基于阿里巴巴EasyExcel实现对复杂Excel模板的填充 官方文档以及开源 对应修改 代码展示 测试 官方文档以及开源 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目 ...

  4. Java - EasyExcel结合VBA实现Excel导出下拉多选框与单选框

    需求:导出一个带有单选下拉框与多选下拉框的excel模板 思路:1.使用VBA脚本设置带有多选框的模板2.使用EasyExcel给字段填充单选下拉框数据源 一.创建带有多选框宏的excel模板 *.x ...

  5. easy-excel 根据模板生成 excel 报表

    使用 easy-excel 的填充方法 模板和代码对应关系图 模板 sheet0 和代码对应关系 模板 sheet0 和代码对应关系 代码为: excelWriter.fill(new FillWra ...

  6. EasyExcel使用模板填充数据导出遇到的坑

    EasyExcel使用模板填充数据导出遇到的坑 1.最近需求涉及excel的导出,所以选择用阿里的EasyExcel框架来使用是比较方便的,这个框架封装了许多方法来供我们使用,比传统POI简单许多 2 ...

  7. easyExcel使用模板填充式的导出

    easyExcel的填充式导出与XLSTransformer的模板导出类似,都可以将复杂表格的导出简单化,不需要自己去画复杂的表头和调样式:但是在大数据量的导出远远比XLSTransformer性能好 ...

  8. excel日期怎么间隔填充_系列或相同日期的自动填充Excel日期

    excel日期怎么间隔填充 If you're entering dates on an Excel worksheet, you don't have to enter each date indi ...

  9. EasyExcel导入和导出excel数据表格用法示例

    说明:平时项目中经常有需要把excel表格中的数据导入库中,或者需要把查询出来的数据导出到excel文件中,今天就来介绍阿里的 easyexcel 的用法 一.SpringBoot集成EasyExce ...

最新文章

  1. dns (域名系统)
  2. 洛谷 [P2590] 树的统计
  3. php in方法,PHP函数in_array()使用详解
  4. android6.0源码分析之Camera API2.0下的Preview(预览)流程分析
  5. HarmonyOS之sdkmgr命令的使用
  6. 关于HashMap容量的初始化,还有这么多学问。
  7. OpenCV 发起 Spatial AI挑战赛
  8. Python字符串类型:字符串索引、字符串切片、字符串format()方法格式化、字符串操作符、字符串处理函数
  9. C++STL笔记(三):array详解
  10. 大数据数据科学家常用面试题_面试有关数据科学,数据理解和准备的问答
  11. 解决UnicodeEncodeError。python的docker镜像增加locale 中文支持
  12. JavaWeb-10(会话技术之sessionamp;JSP)
  13. IAR平台下使用STM32的DSP配置方法
  14. 银博进销存 v2.21.1 医疗器械版 下载
  15. 三星识别文字_Samsung OCR Software三星光学字符识别软件下载_Samsung OCR Software三星光学字符识别软件官方下载-太平洋下载中心...
  16. 小米手机play商店无法下载
  17. 局域网内ping不通另外一台电脑_疫情期间宅家一台电脑如何做计算机网络实验...
  18. 服务器两广豪杰维护,逆水寒11月22日更新到几点 世界boss即将掉落逆水之寒
  19. 两个鸡蛋测试:从100层楼往下扔鸡蛋,求最坏情况下确认保证鸡蛋可以不破的最大楼层所需次数
  20. ubuntu18.04安装Qt5.9.9后没有QtCreator启动图标

热门文章

  1. 五一节,企业该如何使用公众号吸一波精准粉?
  2. python基础(字符串常用、数字类型转换、基本运算符与流程控制)
  3. u盘装系统找不到硬盘怎么办?会这三种技能就不发愁!
  4. vue+elementUI 照片墙图片的删除按钮动态显隐
  5. 【极简spark教程】DataFrame常用操作
  6. AIX 如何在 IBM AIX 上配置 YUM 并创建本地存储库
  7. 关于英文字符半角转全角的问题
  8. C语言字符串长度计算
  9. 让自己面对外部刺激,更加从容淡定
  10. 管道鸟cortex-M4(TM4C1294)