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

背景

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

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

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

分析原因

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

于是排查问题。

1、观察模板。

模板中,在不需要填充的地方,也用了 {.字段}, 改成 {字段},试了不行。

2、模板导出时,总有一行是合并的。

怀疑数据问题,修改数据,发现这个是落款的合并单元格,也不行。

3、比对系统代码。

发现了问题,代码中少加了配置。

4、对比mvn版本

发现版本不太一样,会存在影响

解决问题

1、增加配置

发现了问题,解决测试。

原代码如下:

java 复制代码
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();
}

修改之后如下:

java 复制代码
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的版本问题了。

版本修改

原版本如下:

java 复制代码
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.0</version>
</dependency>

修改之后如下:

java 复制代码
<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

相关推荐
E-iceblue2 天前
Excel 列转行/行列转换全指南:从 4 种常见解法到 Python 批量自动化
python·excel·python库·spire.xls
Data-Miner2 天前
AI处理数据的脚本复用与逻辑复用有什么区别?哪种方式更能沉淀工作成果
数据分析·excel
福兮说2 天前
在浏览器里写一个“够用就好“的 Excel 公式求值器
前端·javascript·excel·编译原理
慧都小妮子3 天前
标签打印如何减少手工抄数?用Bartender 直连 Excel 批量打印
excel·bartender·条码打印·标签打印软件·数据驱动打印·工业打印机
SunnyDays10113 天前
Java 设置 Excel 数据验证:整数、日期、文本长度、下拉列表和时间
java·excel·数据验证·下拉列表
Metaphor6923 天前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
用户0332126663674 天前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
企业数字化笔记4 天前
固定资产Excel批量导入怎么防重复?资产编码、重复检查和错误回执
java·后端·excel
CORNERSTONE3654 天前
低代码开发有哪些应用场景?
低代码·excel·erp·mes·企业数字化
小葱炖豆腐5 天前
python绘制excel折线图
python·excel·numpy·pandas·matplotlib