jeecg导出一对多,主子表,子表某字段为多字典项

2 篇文章 0 订阅

要求:

	导出主数据以及明细数据,明细数据可能有多条,标准的一对多导出。
	唯一的难点是:有两个字段是字典项,而且字典项是级联的,第一个字典项好控制,但是第二个字段的字典项需要根据第一个字典项的值来确定。
	举个例子:有10个字典,第一个字段用第一个字典,但是第二个字段需要从那9个字典中取。

导出形式:

在这里插入图片描述

思路:

整体思路还是按照jeecg官网给出的例子,地址:http://doc.jeecg.com/2044230
本想在前端将字典项中的内容都传过来保存,但是字段用的dicCode注解,不太好处理,于是转后端处理。

解决办法:

方法一:在获取子表数据时,将对应的字段附上值。
1:需要注入ISysDictService ,以此获取对应字典项。
@Autowired
private ISysDictService sysDictService;

2:如下图:
我的项目对sysDictService进行了封装,所以可能方法会有些对不上,但是功能都是一样的。
在这里插入图片描述

方法二:此方法未验证,仅作为一种参考.
子表中,字段处使用exportConvert注解。然后在下面的convertget方法中添加需要处理的代码。

如下图:
在这里插入图片描述

遇到的其他问题:

1.报错: java.lang.IllegalArgumentException: object is not an instance of declaring class
原因:对象的类型匹配不正确,我在属性复制的时候,子类没有复制过去。子类对应错误,修改子类,解决。
如下图:InspectMonitorCheckDetailVO改为InspectMonitorCheckDetail。
在这里插入图片描述

2. 排序:要加都加,我之前明细这里没加orderNum,所以排到了第一。

3. 子表中的dicCode注解不生效
原因:第一个字段的dicCode的值中有特殊字符:下划线
解决:修改去掉特殊字符

4.Merged region A5 must contain 2 or more cells
导出一对多时,当子list的size为1时会报错
这个只是个错误日志,实际发现不影响导出功能
官方解释:版本问题,autopoi升级到1.2.2即可。
https://gitee.com/jeecg/jeecg-boot/issues/I1YH6B
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用EasyPoi导出一对多内部合并多个头,可以按照以下步骤进行操作: 1. 定义一个Excel导出模板,包括一对多关系的头和需要合并的头。 2. 在Java代码中定义导出数据集合,并设置好一对多关系的数据。 3. 使用EasyPoi的ExcelExportUtil工具类,读取Excel导出模板,并获取到需要合并的头列。 4. 使用EasyPoi的ExportParams类,设置导出参数,包括头行数、需要合并的头列等。 5. 调用ExcelExportUtil.exportExcel方法,将数据集合和导出参数传入,即可生成带有合并头的Excel文件。 以下是示例代码: ``` // 定义导出数据集合 List<Parent> dataList = new ArrayList<>(); // 设置一对多关系的数据 Parent parent = new Parent(); parent.setName("Parent A"); List<Child> children = new ArrayList<>(); children.add(new Child("Child A1", "Value 1")); children.add(new Child("Child A2", "Value 2")); parent.setChildren(children); dataList.add(parent); // 读取Excel导出模板,并获取需要合并的头列 Workbook workbook = ExcelExportUtil.exportBigExcel(new ExportParams(), Parent.class, dataList); Sheet sheet = workbook.getSheetAt(0); Row headerRow = sheet.getRow(0); List<Integer> mergeList = new ArrayList<>(); mergeList.add(0); mergeList.add(1); mergeList.add(2); mergeList.add(3); // 设置导出参数,包括头行数、需要合并的头列等 ExportParams exportParams = new ExportParams(); exportParams.setTitleRows(4); exportParams.setMergeColumnIndex(mergeList); // 导出Excel文件 FileOutputStream fos = new FileOutputStream("output.xlsx"); workbook.write(fos); fos.close(); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值