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 0c74d63c0..9f15c383e 100755 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java @@ -7,6 +7,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Console; import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.SafeConcurrentHashMap; import cn.hutool.core.map.TableMap; @@ -1022,6 +1023,7 @@ public class ExcelWriter extends ExcelBase { } else if (BeanUtil.isBean(rowBean.getClass())) { if (MapUtil.isEmpty(this.headerAlias)) { rowMap = BeanUtil.beanToMap(rowBean, new LinkedHashMap<>(), false, false); + Console.log(rowMap); } else { // 别名存在情况下按照别名的添加顺序排序Bean数据 rowMap = BeanUtil.beanToMap(rowBean, new TreeMap<>(getCachedAliasComparator()), false, false); diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/Issue2899Test.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/Issue2899Test.java new file mode 100755 index 000000000..ac46db0b3 --- /dev/null +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/Issue2899Test.java @@ -0,0 +1,40 @@ +package cn.hutool.poi.excel; + +import cn.hutool.core.annotation.Alias; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.FileUtil; +import lombok.Data; +import org.junit.Ignore; +import org.junit.Test; + +public class Issue2899Test { + + @Test + @Ignore + public void aliasWriteTest() { + // Bean中设置@Alias时,setOnlyAlias是无效的,这个参数只和addHeaderAlias配合使用,原因是注解是Bean内部的操作,而addHeaderAlias是Writer的操作,不互通。 + final TestBean testBean1 = new TestBean(); + testBean1.setName("张三"); + testBean1.setScore(12); + + final TestBean testBean2 = new TestBean(); + testBean2.setName("李四"); + testBean2.setScore(23); + + FileUtil.del("d:/test/aliasTest.xlsx"); + final ExcelWriter writer = ExcelUtil.getWriter("d:/test/aliasTest.xlsx"); + + writer.addHeaderAlias("姓名", "姓名"); + writer.setOnlyAlias(true); + writer.merge(2, "成绩单"); + writer.write(CollUtil.newArrayList(testBean1, testBean2), true); + writer.close(); + } + + @Data + static class TestBean{ + @Alias("姓名") + private String name; + private double score; + } +}