当前位置: 首页 > news >正文

easyexcel根据模板导出Excel文件,表格自动填充问题

背景

同事在做easyexcel导出Excel,根据模板导出的时候,发现导出的表格,总会覆盖落款的内容。

这就很尴尬了,表格居然不能自动填充,直接怒喷工具,哈哈。

然后一起看了一下这个问题。

分析原因

我找了自己的系统中关于表格导出的页面,导出了一下,发现可以正常扩充。

于是排查问题。

1、观察模板。
模板中,在不需要填充的地方,也用了 {.字段}, 改成 {字段},试了不行。
2、模板导出时,总有一行是合并的。
怀疑数据问题,修改数据,发现这个是落款的合并单元格,也不行。
3、比对系统代码。
发现了问题,代码中少加了配置。
4、对比mvn版本
发现版本不太一样,会存在影响

解决问题

1、增加配置

发现了问题,解决测试。
原代码如下:

public static void exportExcelByTemplate(String templateFile, Map<String,Object> data,List<Object> dataList, OutputStream out){ExcelWriter build = EasyExcel.write(out).withTemplate(templateFile).build();WriteSheet sheet = EasyExcel.writerSheet().build();build.fill(dataList, sheet);build.fill(data,sheet);build.finish();
}

修改之后如下:

public static void exportExcelByTemplate(String templateFile, Map<String,Object> data,List<Object> dataList, OutputStream out){ExcelWriter build = EasyExcel.write(out).withTemplate(templateFile).build();WriteSheet sheet = EasyExcel.writerSheet().build();FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();build.fill(dataList, fillConfig, sheet);build.fill(data,sheet);build.finish();
}

增加了配置:FillConfig
即:FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
需要注意的是,配置一定要是 TRUE 才行。

观察源码不难发现,配置中有一个重要的一项:forceNewRow
即强制添加新行,也就是这个配置起到了作用。

2、poi升级

以上方式仍不行的话,就需要观察当前poi的版本问题了。

版本修改
原版本如下:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version>
</dependency>

修改之后如下:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>

重试,解决问题。

相关链接:JAVA导出Excel文件:https://blog.csdn.net/qq_38254635/article/details/126691175

http://www.lryc.cn/news/214106.html

相关文章:

  • golang调用智能合约,获取合约函数的返回值
  • Django3框架-(3)-[使用websocket]:使用channels实现websocket功能;简化的配置和实际使用方式
  • java-工具类抛异常
  • Navicat连接postgresql数据库 -->华为云服务器
  • Leetcode2086. 从房屋收集雨水需要的最少水桶数
  • Pandas教程(非常详细)(第一部分)
  • typing.Union` 标注一多种变量类型
  • OSPF高级特性
  • mysql中日期的加减 date_add()、date_sub() 函数
  • 实在智能携手品牌商家,在活动会面中共谋发展
  • EXSi系统安装与使用
  • Spring MVC (Next-1)
  • 双目视觉检测 KX02-SY1000型测宽仪 有效修正和消除距离变化对测量的影响
  • C++ 面向对象 学习 优秀教程
  • Python笔记——pyChram连接linux子系统,使用linux下的Python进行编译
  • 【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作
  • Spring底层原理(四)
  • Android 14 rook替代Postern进行中间人抓包
  • [rancher] rancher部署和使用的一些思考
  • 迅镭激光董事长颜章健荣膺“2023年如皋市科技强企人物”!
  • 专业医学病例翻译公司推荐
  • 英飞凌TC3xx-Overlay
  • Win10系统有几种复制文件的命令,哪种最强大?
  • 力扣202.快乐数
  • iOS Xcode15 适配:Other Linker Flags:-ld_classic
  • springboot苍穹外卖实战:六、redis(Spring Data Redis)
  • sqli 靶场 Level23-Level30 wp
  • 《完蛋!我被美女包围了》突然火了!世界首个开源贡献榜出炉丨 RTE 开发者日报 Vol.75
  • C++ Qt 学习(一):Qt 入门
  • 高性能消息中间件 - Kafka3.x(三)