diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e0cee698..2a06170fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### 新特性 * 【core 】 ListUtil、MapUtil、CollUtil增加empty方法 +* 【poi 】 调整别名策略,clearHeaderAlias和addHeaderAlias同时清除aliasComparator(issue#828@Github) ### Bug修复 * 【json 】 修复解析JSON字符串时配置无法传递问题 diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java index 1f2a27cbb..3cec6ba4e 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java @@ -200,7 +200,6 @@ public class ExcelWriter extends ExcelBase { */ public ExcelWriter reset() { resetRow(); - this.aliasComparator = null; this.headLocationCache = null; return this; } @@ -426,6 +425,8 @@ public class ExcelWriter extends ExcelBase { */ public ExcelWriter setHeaderAlias(Map headerAlias) { this.headerAlias = headerAlias; + // 新增别名时清除比较器缓存 + this.aliasComparator = null; return this; } @@ -437,6 +438,8 @@ public class ExcelWriter extends ExcelBase { */ public ExcelWriter clearHeaderAlias() { this.headerAlias = null; + // 清空别名时清除比较器缓存 + this.aliasComparator = null; return this; } @@ -467,6 +470,8 @@ public class ExcelWriter extends ExcelBase { } this.headerAlias = headerAlias; headerAlias.put(name, alias); + // 新增别名时清除比较器缓存 + this.aliasComparator = null; return this; } diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/test/ExcelWriteTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/test/ExcelWriteTest.java index abc3edb28..c192efdcc 100644 --- a/hutool-poi/src/test/java/cn/hutool/poi/excel/test/ExcelWriteTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/test/ExcelWriteTest.java @@ -450,15 +450,26 @@ public class ExcelWriteTest { rows.add(tempList); } ExcelWriter writer = ExcelUtil.getWriter("D:\\test\\multiSheet.xlsx", "正常数据"); + writer.addHeaderAlias("1", "row1"); + writer.addHeaderAlias("3", "row2"); + writer.setOnlyAlias(true); + writer.write(rows, true); writer.autoSizeColumnAll(); + //表2 writer.setSheet("当前重复数据"); + writer.clearHeaderAlias(); + writer.addHeaderAlias("3", "行3"); + writer.addHeaderAlias("1", "行1"); writer.write(rows, true); writer.autoSizeColumnAll(); + + //表3 writer.setSheet("历史重复数据"); writer.write(rows, true); writer.autoSizeColumnAll(); + writer.close(); }