[alibaba/easyexcel]有无一对多导出比较优雅的方案

2024-05-16 661 views
7

关于一对多导出问题,比如订单跟商品,每个订单下有不同的商品,如下表所示 image

网上有人提供了一个思路: https://cloud.tencent.com/developer/article/1671316

这种是判断每个单元格与上一个单元格是否相同,相同则合并 在数据量大的情况下效率比较低,而且如果上一个子列单元格是其他主列的,也会合并。

求更好的解决思路,谢谢~

回答

0

你说的那个思路是存在一定的问题的,因为判定一条记录和上一条是否相同,仅判断一列的单元格是否相同是不适合具体的业务场景的,有时候是要两个列的字段合起来,或者多个列的字段合起来比较,才能确定两条记录是一致,才能合并。我的想法是把导出的对象中的对多的属性设置为list,然后导出时识别出所有属性为list的最大size为合并行数,创建cell时,直接以合并结果来创建。目前在研究源码中.......

8

要创建自定义合并策略。

4

可是你们连对象里面嵌套list都不支持转换啊

6

对象嵌套list 这么常用的都不支持。

5

自己计算并添加需要合并的单元格呢?

CellRangeAddress cra = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
Sheet sheet = excelWriter.writeContext().writeSheetHolder().getSheet();
sheet.addMergedRegion(cra);