This commit is contained in:
Looly 2023-02-15 19:27:44 +08:00
parent 158647373b
commit 1366b6c1b9
2 changed files with 42 additions and 0 deletions

View File

@ -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<ExcelWriter> {
} 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);

View File

@ -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;
}
}