报表设计是通过模板的方式来建立,其原理是预先设置好内容、格式,并将变化的部分通过“占位符”(也可以理解为“字段变量”)替代,系统会在导出报表时自动替换“占位符”内容。占位符在模版中是非常重要的概念,请务必正确理解。
通过此功能可以完成如日常的报表导出、合同生成、单据打印等。目前系统支持以下几种报表模版类型:
进入管理中心 - 报表模版页面,点击右上角 [添加] 按钮。并按照要求填写/上传报表模版,最后点击保存即可。
上传模版后,可以通过 [预览] 按钮来查看效果,若不满意可调整模版文件后重新上传
PDF 格式导出依赖 LibreOffice 软件,因此在使用前您需要在服务器上 安装 LibreOffice,安装完毕后请确保 soffice.exe
(Windows)或 libreoffice
(Linux/Unix)命令可用。
// Windows 在命令行中输入以下命令验证
soffice.exe
// Linux/Unix 在命令行中输入以下命令验证
libreoffice
// 或者通过 JVM 启动参数 LibreofficeBin 指定命令
-DLibreofficeBin=libreoffice7.4
对于 Linux/Unix 服务器,您可能还需要 安装字体库 才能正常导出 PDF
当报表模版添加后,您可以在记录详情页中使用报表(注意对于 EXCEL 列表 报表,仅能在列表页 数据导出 时使用),点击右侧按钮 [更多] - [报表] 即可打开报表导出窗口,您可以选择下载、查看 PDF(导出格式需启用 PDF)或直接在线预览。
如下是一个简单的 EXCEL 模版示例,他导出了一个订单及其明细列表。模版中以 {}
包裹的内容即为“占位符”,占位符是以 {}
包裹字段(内部标识)的方式编写,如 {createdOn}
,同时也支持 点连接,如{kehu.dizhi}
,他们会在报表导出时替换为实际内容。
从 V3.2 开始支持图片字段导出,若一个字段中包括多个图片仅可导出第一张。同时注意图片字段(包括二维码字段、签名字段)必须使用单独的单元格,否则可能出现错误
报表除了可以导出实体(记录)自身数据,也可以导出其关联数据,包括明细、审批流程、相关项。请注意这些关联数据的占位符需要在原占位符的基础之上添加额外的符号,详情参照下文。
如果实体有明细实体,可以一并导出(多条明细记录)。仅需在原占位符的基础上多加一个 .detail
符号即可,如 {.detail.goodsName}
。
如果实体有审批流程,可以一并导出。与明细类似,审批流程通常包含多条审批记录(节点),仅需在原占位符的基础上多加一个 .approval
符号即可,如 .approval.approver
。审批流程的可用字段如下。
字段 | 说明 |
---|---|
.approval.approver |
审批人 |
.approval.approvedTime |
审批时间 |
.approval.remark |
批注 |
.approval.state |
审批状态(通过/驳回) |
从 V3.3 版本开始支持在 EXCEL 模板中导出相关记录,其编写规则为 引用字段.实体.字段
。例如有客户、订单两个实体,其中订单通过“所属客户”字段引用客户实体,则可以在客户报表中导出其拥有的订单列表,具体编写方式为 .所属客户.订单.订单金额
,例如 {.belongAccount.SalesOrder.totalAmount}
。
? 请注意明细记录、审批流程及(同一)相关项只能横向的排列在一行,不能混合排列
以下示例包含了主记录、明细记录、审批流程、相关项。但请注意此模板示例并不直接可用!其存在的问题包括:
B3
单元格 accountId.phone
需要将 .
连接符号替换为 $
,即 accountId$phone
.
连接符号替换为 $
,例如 A7
单元格改为 {$detail.goodsName}
.
也需替换,例如 A15
单元格改为 {$accountId$SalesOrder.totalAmount}
.
连接符号为 $
WORD 模版与 EXCEL 模版的写法相似,但有少许不同。包括:
$
符号@
符号(包括二维码、签名){detail}
(明细记录) 或 {approval}
(审批流程)[]
包裹,且字段前无需加 .
或 $
符号所属客户$订单
,例如 {belongAccount$SalesOrder}
? 请注意 WORD 模板仅支持
.docx
版本文件,不支持.doc
若您需要对字段值进行转换显示(例如数字中文大写),可通过在字段后添加值处理函数的方式 {字段#函数}
,如 {shuzi#CHINESEYUAN}
。目前支持的函数如下:
变量 | 适用字段 | 说明 |
---|---|---|
#CHINESEYUAN |
整数、小数 | 数字转中文大写(金额),如 壹佰贰拾叁元整 |
#THOUSANDS |
整数、小数 | 数字加千分位,如 1,234 |
#CHINESEDATE |
日期、日期时间 | 日期转中文 |
#SIZE |
图片 | 图片指定大小,如 #SIZE200 指定宽度为 200(高度自适应);#SIZE200*500 指定宽度和高度 |
#CHINESE ~~v3.8 |
整数、小数、日期、日期时间、时间 | 数字、日期转中文,如 壹佰贰拾叁 2024年09月01日 |
#CHECKBOX ~~v3.8 |
多选、下拉列表 | 显示为复选框,如需显示为单选框可以使用 #CHECKBOX:2 |
#PICKAT ~~v3.8 |
分类、日期 | 对于分类:取分类中指定级,如 #PICKAT:1 将取“地区”分类中的第 1 级,即省份。对于日期:取 12345 分别对应 年月日时分 |
#EMPTY ~~v3.8 |
所有字段 | 字段值为空时显示,如 #EMPTY:无 |
网页模版的编写方式与 WORD 模版相同,请参考 WORD 模版 即可。同时注意以下事项:
当模版类型选择“网页”时,点击 [确定]/[下一步] 按钮会自动进入设计器页面,如下图所示。
您还可以为数据列表的 数据导出 配置模板,模板编写规则为在占位符的基础上添加 .
符号,例如 .OrderNumber
。请注意占位符必须横向的排列在同一行,下图是一个列表模板示例。
? 列表模版不支持包含明细记录、审批流程及相关记录
您可以在 列表页面 使用列表模板,在页面右上方点击 [更多] - [数据导出] 打开导出窗口,在导出窗口中选择要使用的模板,最后点击 [确定] 即可下载。
EXCEL 列表的使用依赖“允许数据导出”权限,即数据列表“导出”功能,如未开启此权限则无法使用
占位符变量可以导出一些系统值,例如当前时间、当前用户,或列表的自增序号等。目前所支持的变量如下表:
变量 | 说明 |
---|---|
__NUMBER |
自增序号 |
__KEEP |
单元格保持 |
__CURRENTUSER |
当前登录用户(姓名) |
__CURRENTBIZUNIT |
当前登录用户所在部门(名称) |
__CURRENTDATE |
当前日期 |
__CURRENTDATETIME |
当前日期时间 |
当您使用上述占位符变量时,需要遵循相应模板类型的编写规则,例如在包括明细列表的报表中使用需要添加
.detail
前缀,如.detail.__NUMBER
在 Excel 格式的列表类模板中(包括明细列表、审批流程、相关项,以及 EXCEL 列表模板),您可以使用 Excel 函数。请注意对于应用在列的函数请至少包含两个单元格才可以正确计算,如下图所示。
对于应用在行的函数需特殊编写。请使用 {.__KEEP:(=XXX)}
的方式包裹函数(XXX
为实际的函数)(此功能从 V3.2 开始支持),如下图所示。
对于明细列表、审批流程、相关项这类包含多条记录的(列表),以及 EXCEL 列表(V3.8.4 开始支持),您可以指定字段排序规则。通过在字段变量后添加 :asc
(正序)或 :desc
(倒序)即可,例如 {.accountName:desc}
。
如有多个排序字段,其排序顺序为在模版中出现的前后顺序
对于 Excel、Word 格式的报表预览,请参考 文档预览 注意事项。
请参考 导出 PDF 格式 注意事项。
可以。但系统并不直接支持此功能,需通过 FrontJS 的 FrontJS.DataList.exportReport 方法实现。