easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

设置表头head的时候,如果自定义list,用arrays的方式会报错

Open tangrg opened this issue 11 months ago • 1 comments

61F)588D1M(XEZKM~N_D$9

如果用这种方式会报错的

      // 创建表头数据(这里假设三行表头)
        List<List<String>> multiHeader = new ArrayList<>();
        multiHeader.add(Arrays.asList("基础信息", "详细信息")); // 第一行
        multiHeader.add(Arrays.asList("姓名", "年龄", "地址", "邮箱")); // 第二行
        multiHeader.add(Arrays.asList("电话")); /

应该在com.alibaba.excel.metadata.property.ExcelHeadProperty#initHeadRowNumber方法中的如下代码进行优化

 List<String> list = head.getHeadNameList();

优化为

List<String> list =new ArrayList( head.getHeadNameList());

tangrg avatar Mar 12 '24 10:03 tangrg

List<List<String>>类型的表头应该这样构建才对:

// 此处举例为2行表头
List<List<String>> multiHeader = new ArrayList<>();
multiHeader.add(Arrays.asList("基础信息", "姓名"));
multiHeader.add(Arrays.asList("基础信息", "年龄"));
multiHeader.add(Arrays.asList("详细信息", "地址"));
multiHeader.add(Arrays.asList("详细信息", "邮箱"));
multiHeader.add(Arrays.asList("详细信息", "电话"));

每一个子集合中的第一个元素表示第一行表头,第二个元素表示第二行表头,以此类推。 相邻且相同名称的分组表头会自动合并。

LSL1618 avatar May 16 '24 07:05 LSL1618