山东住房建设部官方网站,昆明凡科建站公司,wordpress加密数据库文件,网站提供哪些服务背景
同事在做easyexcel导出Excel#xff0c;根据模板导出的时候#xff0c;发现导出的表格#xff0c;总会覆盖落款的内容。
这就很尴尬了#xff0c;表格居然不能自动填充#xff0c;直接怒喷工具#xff0c;哈哈。
然后一起看了一下这个问题。
分析原因
我找了自…背景
同事在做easyexcel导出Excel根据模板导出的时候发现导出的表格总会覆盖落款的内容。
这就很尴尬了表格居然不能自动填充直接怒喷工具哈哈。
然后一起看了一下这个问题。
分析原因
我找了自己的系统中关于表格导出的页面导出了一下发现可以正常扩充。
于是排查问题。
1、观察模板。 模板中在不需要填充的地方也用了 {.字段} 改成 {字段}试了不行。 2、模板导出时总有一行是合并的。 怀疑数据问题修改数据发现这个是落款的合并单元格也不行。 3、比对系统代码。 发现了问题代码中少加了配置。 4、对比mvn版本 发现版本不太一样会存在影响
解决问题
1、增加配置
发现了问题解决测试。 原代码如下
public static void exportExcelByTemplate(String templateFile, MapString,Object data,ListObject 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, MapString,Object data,ListObject 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的版本问题了。
版本修改 原版本如下
dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.1.0/version
/dependency修改之后如下
dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.1.2/version
/dependency重试解决问题。
相关链接JAVA导出Excel文件https://blog.csdn.net/qq_38254635/article/details/126691175