easypoi 导出合并表头,合并单元格 遇到的坑

大家肯定都知道 easypoi   但是不知道有没有用过,我也是第一次用,常规导出确实非常简单 在字段上 加注解 

@Excel(name = "序号",isColumnHidden=true,orderNum="0",fixedIndex = 0 ) 进行排序就可以

1、但是有需要整理表头的时候就很难受了 百度了一圈可以增加  groupName 属性 但是就是不生效,无法出现表头百度了一圈也没有找到问题关键,突然看到在3.0.1的时候新增了groupName属性赶紧把pom生版本,属实生效 所以在用easypoi的时候有些问题找不到答案试着区升级

2、接下来用到了排序 orderNum  跟 fixedIndex 这两个属性都是指定列,但是还是会有时候不生效串列,还是百度了一圈没有解决,然后试着再次升级,这次升级到3.1.0  确实不负众望完美解决,上边遇到的两个坑都是跟版本有关系,按理讲,低版本不应该看到高版本的字段但是确实能看到很难受

3、遇到的第三个问题就是合并excel值得单元格 他的属性注解有 needMerge = true (官方说法 是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row ) 也就是你在对象里边可以创建别的List<>对象 加上这个属性就可以自动合并单元格,需要在List<>对象上增加@ExcelCollection 这个注解 常规情况下就可以正常导出,但是 这里说的是但是 导出得时候还会报错 object is not an instance of declaring class easypoi 这个错 找不到对应得类  排查了一大圈 Debug跟踪了一圈最后终于发现  因为我查询出来的是一个对象,然后我直接强转了这个对象 外边的这层对象强转过来了,但是里边包含的List<>对象没有强转过来 也需要转换成你想要的对象 这样就完美解决

总结:很少用easypoi  刚用的时候确实挺坑而且百度不到你想要的答案,只能自己去摸索,但是用起来你会发现真的挺简单的很舒服 可以在easypoi 官方文档库去查询 写的不是很详细

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用easyPoi导出word时,需要使用WordExportUtil工具类来生成word文档。要合并列相同的单元格,需要在生成表格时设置合并单元格的信息。 例如,假设要导出以下表格: | 姓名 | 年龄 | 地址 | | :----: | :----: | :----: | | 张三 | 20 | 北京 | | 李四 | 20 | 上海 | | 王五 | 21 | 广州 | 如果要合并年龄相同的单元格,可以按以下步骤操作: 1. 创建一个List对象,用于存储表格数据。 ```java List<Map<String, Object>> dataList = new ArrayList<>(); ``` 2. 设置表头,按照以下格式设置。 ```java Map<String, Object> header = new LinkedHashMap<>(); header.put("姓名", "name"); header.put("年龄", "age"); header.put("地址", "address"); dataList.add(header); ``` 3. 设置表格数据,按照以下格式设置。 ```java Map<String, Object> data1 = new LinkedHashMap<>(); data1.put("name", "张三"); data1.put("age", 20); data1.put("address", "北京"); dataList.add(data1); Map<String, Object> data2 = new LinkedHashMap<>(); data2.put("name", "李四"); data2.put("age", 20); data2.put("address", "上海"); dataList.add(data2); Map<String, Object> data3 = new LinkedHashMap<>(); data3.put("name", "王五"); data3.put("age", 21); data3.put("address", "广州"); dataList.add(data3); ``` 4. 创建一个WordExportContext对象,并设置表格样式。 ```java WordExportContext context = new WordExportContext(); TableStyle tableStyle = new TableStyle(); tableStyle.setBackgroundColor("FFFFFF"); tableStyle.setAlign(STJc.CENTER); tableStyle.setVerticalAlign(STTblVerticalAlignment.CENTER); tableStyle.setBold(false); tableStyle.setFontSize(12); tableStyle.setFontFamily("微软雅黑"); tableStyle.setBorderSize(4); tableStyle.setBorderColor("000000"); context.setTableStyle(tableStyle); ``` 5. 创建一个Table对象,并设置表格样式。 ```java Table table = new Table(); table.setHeaders(dataList.subList(0, 1)); table.setRows(dataList.subList(1, dataList.size())); table.setStyle(tableStyle); ``` 6. 设置合并列信息。 ```java MergeRow[] mergeRows = new MergeRow[1]; mergeRows[0] = new MergeRow(1, 1, 1, 2); table.setMergeRows(mergeRows); ``` 7. 将Table对象添加到WordExportContext对象中。 ```java context.getTables().add(table); ``` 8. 使用WordExportUtil工具类生成word文档。 ```java byte[] byteArray = WordExportUtil.exportWord07("table.docx", context); ``` 以上就是使用easyPoi导出word合并列相同的单元格的步骤。其中,MergeRow对象的参数依次为:起始行、结束行、起始列、结束列。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值