生成Excel文件需要上传Excel模板。通过上传文档模板自动列出模板中的数据,设置映射即可填充模板生成Excel文档。

本章以生成采购申请单为例,演示自动生成Excel文档的配置过程。

集成场景

使用ESB业务输出,配置Excel生成→在流程上调用,生成Excel文件。

Image

或使用【Excel生成】节点,直接在流程上配置生成Excel文件。

Image

两者配置方式相似,这里以ESB业务流配置,ESB节点调用为例来说明如何配置。

Image

本节包括以下主题:

# 制作Excel模板

准备

模板为Excel文件,使用Excel制作,模板需保存为Excel 2003格式,后缀为xls。

在安装包,找到SalesReport.xls文件,模板格式参照此文件制作。

Excel模板概貌

以采购申请单为例,制作采购申请单模板,用表单信息填充模板变量,显示采购基本信息、采购明细信息并以表单数据填充图表。

Excel模板由输出页、DataSource、FixFill、GridFill四个部分组成,如图:

Image

# 输出页

输出页是调用Excel模板时替换输出模板页中变量,生成最终的Excel文件,其他sheet页在生成文件时不显示。如图:

Image

模板页的明细表行数、图表系列将随模板变量,动态增加。

可以有一个输出页,也可以有多个输出页。

# FixFill

固定栏位的填充。

Image

属性名称
说明
Sheet名 填充到哪个Sheet

不设置表示填充到第一个Sheet
单元格 填充到哪个单元格
变量名 局部填充变量

不设置 – 替换整个单元格内容

设置 – 替换单元格中匹配字符串(局部填充)
数据集 用哪个数据集填充,这里是模板参数的标题
字段 此处为模板变量(中英文均可)
过滤条件 过滤表达式,成立时才填充

应用到System.Data.DataView的RowFilter属性,近似SQL Server中的where

如:Amount>200,表示金额大于200时应用填充
显示函数 缺省为DefaultRender,使用模板中的字体、颜色、格式填充单元格

使用自定义显示函数时,在此处写上函数名即可,如:TimeSpanRender1
空值填充 当值为空时,填充内容,如空值填充“-”
注释 本行的备注,与输出无关

# GridFill

明细表填充。

Image

定义明细表

属性名称
说明
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生成】节点进行配置,如图:

Image

上传制作好的Excel模板,如图:

Image

配置传参

在调用界面默认会列出Excel模板中定义的参数,如图:

注意:FileName不设置,也会根据模版名称自动生成文件名加序号,如:采购申请单2023080013.xls。

Image

在Listenner参数下,右键“Payload”分别【添加主表引用】和【添加明细表引用】,如图:

Image

以拖拽的方式,把左侧表字段右侧模板参数一一映射,其中生成的文件名称赋值为:采购申请单。如图:

Image

返回参数

返回值fileId中存放生成文件的附件编号,我们后面要在表单上显示生成的Excel文件要用到,所以这里把filedId映射到右侧strReturnValue,如图:

Image

到这里,使用ESB业务输出功能配置生成Excel文件就配置完成了,点击保存文件为:Excel生成。

在流程上调用,把采购申请单生成Excel文件

在流程建模模块,拖出任务,切换为调用ESB节点,选择调用对象为在ESB输出流模块配置的Excel生成,如图:

Image

配置传参

把流程数据传给ESB,只需拖拽字段一一映射即可(也可按住Ctrl键拖拽表名映射),如图:

Image

数据返回

在ESB业务输出模块,我们配置Excel生成时,配置filedId映射到返回参数strReturnValue,这里我们把返回参数赋值给表单字段Attachments,用以生成Excel文件后显示在表单上。

Image

到这里,在流程上的调用配置就完成了,保存发布流程:Excel生成。

调用

在流程门户,点击流程填写表单发起流程:

Image

经过一步审批,调用ESB生成Excel文件,在表单上也显示了生成的Excel文件,我们下载查看,如图:

Image