导出主从明细
场景描述
- 将主从数据集的记录以表单的形式导出到excel或word中
- 对于多行主数据,有两种选择
- 一行主数据导出一个文件,导出多个文件后,自动压缩成zip包
- 一行主数据导出一个word页,导出一个word文件
实现思路
使用excel导出组件,设置为模板导出
默认导出数据集过滤后的全部数据,如果要导出选中的数据,则再添加一个数据集组件,用选中的行id过滤数据,导出这个数据集的数据
实现步骤
下面以导出订单及其明细介绍操作步骤,批量导出3个订单,系统生成订单.zip,解压后包括3个excel文件
打开其中一个excel文件,效果如下图
1 准备订单及其明细数据
订单表结构
订单明细表结构
订单表添加输出数据集
选择订单明细表
在页面上添加订单数据集,点编辑按钮设置数据列,选中订单的全部列和订单明细数据集orderd,这样模板中就可以通过t.orderd.xx获取到订单明细的数据了
2 准备模板
模板中包括表单数据和列表数据,excel模板和word模板写法不同
- excel模板
- 表单数据来自订单表(主表),使用”双大括号加列名“标识显示的列,例如:订单编号{{orderNo}}
- 列表数据来自订单明细表(从表),使用{{$fe:maplist开始循环,使用”t.从表id.列名“标识显示的列,使用}}结束循环
- word模板
- 表单数据来自订单表(主表),使用”双大括号加列名“标识显示的列,例如:订单编号{{orderNo}}
- 列表数据来自订单明细表(从表),使用{{?从表id}}开始循环,使用{{/从表id}}结束循环,使用{{列名}}标识显示的列,例如:产品{{productName}}
如果导入的列是图片需要加@前缀,如下
上传到数据集中备用
3 批量导出
添加excel导出组件
- 导出数据选择订单数据集
- 数据来源必须选择数据服务
- 在页面中添加模板所在的数据集组件
- 模板源设置的绑定数据列,选择模板所在的数据列
打开导出设置
- 导出模式选择模板导出
- 模板是xls文件,文件类型选择03版excel
- 模板是xlsx文件,文件类型选择07版excel
- 模板是docx文件,文件类型选择word
- 需要批量导出,则选择每行一个文件
- 需要批量打印,则选择每行一页(仅支持word模板)
调用excel导出组件的导出操作,即可导出
4 批量导出中使用不同的模板
可以根据数据来决定使用哪个模板,在模板表中增加标识列tag
上传每种标识对应的模板文件
标识中的内容和订单中某列的内容要一致,作为使用模板的依据,本例中订单表的customKind列内容作为模板标识
在excel导出组件的模板源设置中,设置网络地址如下
/main/dbrest/muban?$get=fexcelmb.stream(0)&tag=eq.${customKind}
其中
- muban是模板数据集的标识
- fexcelmb是模板数据集中的模板列名
- tag是模板数据集中的模板标识列名
- customKind是订单数据集中的存有模板标识数据的列名