关于一对多导出问题,比如订单跟商品,每个订单下有不同的商品,如下表所示
网上有人提供了一个思路: https://cloud.tencent.com/developer/article/1671316
这种是判断每个单元格与上一个单元格是否相同,相同则合并 在数据量大的情况下效率比较低,而且如果上一个子列单元格是其他主列的,也会合并。
求更好的解决思路,谢谢~
关于一对多导出问题,比如订单跟商品,每个订单下有不同的商品,如下表所示
网上有人提供了一个思路: https://cloud.tencent.com/developer/article/1671316
这种是判断每个单元格与上一个单元格是否相同,相同则合并 在数据量大的情况下效率比较低,而且如果上一个子列单元格是其他主列的,也会合并。
求更好的解决思路,谢谢~
你说的那个思路是存在一定的问题的,因为判定一条记录和上一条是否相同,仅判断一列的单元格是否相同是不适合具体的业务场景的,有时候是要两个列的字段合起来,或者多个列的字段合起来比较,才能确定两条记录是一致,才能合并。我的想法是把导出的对象中的对多的属性设置为list,然后导出时识别出所有属性为list的最大size为合并行数,创建cell时,直接以合并结果来创建。目前在研究源码中.......
要创建自定义合并策略。
可是你们连对象里面嵌套list都不支持转换啊
对象嵌套list 这么常用的都不支持。
自己计算并添加需要合并的单元格呢?
CellRangeAddress cra = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
Sheet sheet = excelWriter.writeContext().writeSheetHolder().getSheet();
sheet.addMergedRegion(cra);
通过自定义合并策略来解决这个问题,请大家判断一下这个方式是否可以:https://gitee.com/WeiLU/swiss-army-knife/blob/master/Tools/Tools-easyexcel/src/main/java/link/bosswang/easyexcel/strategy/ItemExportStrategy.java
大佬,404了