生成Excel文件需要上传Excel模板。通过上传文档模板自动列出模板中的数据,设置映射即可填充模板生成Excel文档。
本章以生成采购申请单为例,演示自动生成Excel文档的配置过程。
集成场景
使用ESB业务输出,配置Excel生成→在流程上调用,生成Excel文件。
或使用【Excel生成】节点,直接在流程上配置生成Excel文件。
两者配置方式相似,这里以ESB业务流配置,ESB节点调用为例来说明如何配置。
本节包括以下主题:
# 制作Excel模板
准备
模板为Excel文件,使用Excel制作,模板需保存为Excel 2003格式,后缀为xls。
在安装包,找到SalesReport.xls文件,模板格式参照此文件制作。
Excel模板概貌
以采购申请单为例,制作采购申请单模板,用表单信息填充模板变量,显示采购基本信息、采购明细信息并以表单数据填充图表。
Excel模板由输出页、DataSource、FixFill、GridFill四个部分组成,如图:
# 输出页
输出页是调用Excel模板时替换输出模板页中变量,生成最终的Excel文件,其他sheet页在生成文件时不显示。如图:
模板页的明细表行数、图表系列将随模板变量,动态增加。
可以有一个输出页,也可以有多个输出页。
# FixFill
固定栏位的填充。
属性名称 | 说明 |
---|---|
Sheet名 | 填充到哪个Sheet 不设置表示填充到第一个Sheet |
单元格 | 填充到哪个单元格 |
变量名 | 局部填充变量 不设置 – 替换整个单元格内容 设置 – 替换单元格中匹配字符串(局部填充) |
数据集 | 用哪个数据集填充,这里是模板参数的标题 |
字段 | 此处为模板变量(中英文均可) |
过滤条件 | 过滤表达式,成立时才填充 应用到System.Data.DataView的RowFilter属性,近似SQL Server中的where 如:Amount>200,表示金额大于200时应用填充 |
显示函数 | 缺省为DefaultRender,使用模板中的字体、颜色、格式填充单元格 使用自定义显示函数时,在此处写上函数名即可,如:TimeSpanRender1 |
空值填充 | 当值为空时,填充内容,如空值填充“-” |
注释 | 本行的备注,与输出无关 |
# GridFill
明细表填充。
定义明细表
属性名称 | 说明 |
---|---|
Sheet名 | 填充到哪个Sheet 不设置表示填充到第一个Sheet |
开始行 | 明细表从哪一行开始(Excel行号) |
重复几行 | 每一行数据,对应Excel中几行 通常为1 |
填充数据集 | 用哪个数据集填充 明细表默认GridStore |
Fill | 数据填充 |
Template | 每一行数据,使用哪个模板行(Excel行号) |
Fill
属性名称 | 说明 |
---|---|
单元格 | 填充到哪个单元格 |
变量名 | 局部填充变量 不设置 – 替换整个单元格内容 设置 – 替换单元格中匹配字符串(局部填充) |
字段 | 此处为模板变量 |
过滤条件 | 过滤表达式,成立时才填充 应用到System.Data.DataView的RowFilter属性,近似SQL Server中的where 如:Amount>200,表示金额大于200时应用填充 |
显示函数 | 缺省为DefaultRender,使用模板中的字体、颜色、格式填充单元格 使用自定义显示函数时,在此处写上函数名即可,如:TimeSpanRender1 扩展显示函数,请参照FixFill章节 |
空值填充 | 当值为空时,填充内容,如空值填充“-” |
注释 | 本行的备注,与输出无关 |
Template
定义一个模板行,并设定何时使用模板行。
属性名称 | 说明 |
---|---|
模板名 | 为此模板起一个名字 |
开始行 | 本模板的第一行从哪开始(Excel行号) |
何时使用此模板 | 什么情况下使用此模板行 应用到System.Data.DataView的RowFilter属性,近似SQL Server中的where 如:RowNum<>$totalRow表示非最后行 明细表自动添加列: RowNum – 行号(从1开始计数) 自动添加变量: $totalRow – 总行数 |
# DataSource
定义查询语句,并命名每个查询结果(数据集名称)。
可选项,绝大部分情况下都不使用。
# 使用模板生成Excel文件
上传模板
在【ESB输出流】模块,点击【添加】,进入ESB业务输出配置界面,拖出【Excel生成】节点进行配置,如图:
上传制作好的Excel模板,如图:
配置传参
在调用界面默认会列出Excel模板中定义的参数,如图:
注意:FileName不设置,也会根据模版名称自动生成文件名加序号,如:采购申请单2023080013.xls。
在Listenner参数下,右键“Payload”分别【添加主表引用】和【添加明细表引用】,如图:
以拖拽的方式,把左侧表字段右侧模板参数一一映射,其中生成的文件名称赋值为:采购申请单。如图:
返回参数
返回值fileId中存放生成文件的附件编号,我们后面要在表单上显示生成的Excel文件要用到,所以这里把filedId映射到右侧strReturnValue,如图:
到这里,使用ESB业务输出功能配置生成Excel文件就配置完成了,点击保存文件为:Excel生成。
在流程上调用,把采购申请单生成Excel文件
在流程建模模块,拖出任务,切换为调用ESB节点,选择调用对象为在ESB输出流模块配置的Excel生成,如图:
配置传参
把流程数据传给ESB,只需拖拽字段一一映射即可(也可按住Ctrl键拖拽表名映射),如图:
数据返回
在ESB业务输出模块,我们配置Excel生成时,配置filedId映射到返回参数strReturnValue,这里我们把返回参数赋值给表单字段Attachments,用以生成Excel文件后显示在表单上。
到这里,在流程上的调用配置就完成了,保存发布流程:Excel生成。
调用
在流程门户,点击流程填写表单发起流程:
经过一步审批,调用ESB生成Excel文件,在表单上也显示了生成的Excel文件,我们下载查看,如图: