报表设计

报表设计是通过模板的方式来建立,其原理是预先设置好内容、格式,并将变化的部分通过“占位符”(也可以理解为“字段变量”)替代,系统会在导出报表时自动替换“占位符”内容。占位符在模版中是非常重要的概念,请务必正确理解。

通过此功能可以完成如日常的报表导出、合同生成、单据打印等。目前系统支持以下几种报表模版类型:

基本配置

添加报表模版

进入管理中心 - 报表模版页面,点击右上角 [添加] 按钮。并按照要求填写/上传报表模版,最后点击保存即可。

  1. 选择报表的数据来源(实体)
  2. 选择模版类型
  3. 按照选择的模版类型上传模版文件(如何编写模版文件请参见下文)
  4. 选择导出格式
  5. 设置报表的使用条件(不符合条件的记录不能使用此报表)

上传模版后,可以通过 [预览] 按钮来查看效果,若不满意可调整模版文件后重新上传

导出 PDF 格式

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

如下是一个简单的 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}
  • 若只包括 1 个列表,则按照示例写法即可,无需替换 . 连接符号为 $

WORD

WORD 模版与 EXCEL 模版的写法相似,但有少许不同。包括:

  • 引用字段点连接全部使用 $ 符号
  • 图片需要在字段变量前添加 @ 符号(包括二维码、签名)
  • 支持将明细记录、审批流程一并导出到表格(注意只能导出到表格),但编写方式与 EXCEL 模版不同
    • 在表格的首行首列,需要添加一个额外占位符,即 {detail}(明细记录) 或 {approval}(审批流程)
    • 表格内占位符由 [] 包裹,且字段前无需加 .$ 符号
  • WORD 模版从 V3.8 开始支持相关项导出。编写方式与明细记录、审批流程类似,仅首行首列的额外占位符编写方式不同。例如有客户、订单两个实体,其中订单通过“所属客户”字段引用客户实体,则占位符编写方式为 所属客户$订单,例如 {belongAccount$SalesOrder}

完整示例

? 请注意 WORD 模板仅支持 .docx 版本文件,不支持 .doc

值转换 ~~v3.7

若您需要对字段值进行转换显示(例如数字中文大写),可通过在字段后添加值处理函数的方式 {字段#函数},如 {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:无

网页 ~~v3.8

网页模版的编写方式与 WORD 模版相同,请参考 WORD 模版 即可。同时注意以下事项:

  1. 由于网页的技术特性,请不要在一个占位符上设置多种字体格式,这会导致无法识别
  2. 如需分页(分页仅打印时有效),可在编辑工具区点击 [插入] - [分页符]

网页模版设计器

当模版类型选择“网页”时,点击 [确定]/[下一步] 按钮会自动进入设计器页面,如下图所示。

  1. 编辑工具区
  2. 便捷插入字段
  3. 便捷插入相关项(仅首行首列符)
  4. 实时预览,设计过程中可点击预览效果(无需先保存)
  5. 保存并返回

EXCEL 列表

您还可以为数据列表的 数据导出 配置模板,模板编写规则为在占位符的基础上添加 . 符号,例如 .OrderNumber。请注意占位符必须横向的排列在同一行,下图是一个列表模板示例。

? 列表模版不支持包含明细记录、审批流程及相关记录

使用 EXCEL 列表模板

您可以在 列表页面 使用列表模板,在页面右上方点击 [更多] - [数据导出] 打开导出窗口,在导出窗口中选择要使用的模板,最后点击 [确定] 即可下载。

EXCEL 列表的使用依赖“允许数据导出”权限,即数据列表“导出”功能,如未开启此权限则无法使用

高级主题

占位符变量

占位符变量可以导出一些系统值,例如当前时间、当前用户,或列表的自增序号等。目前所支持的变量如下表:

变量 说明
__NUMBER 自增序号
__KEEP 单元格保持
__CURRENTUSER 当前登录用户(姓名)
__CURRENTBIZUNIT 当前登录用户所在部门(名称)
__CURRENTDATE 当前日期
__CURRENTDATETIME 当前日期时间

当您使用上述占位符变量时,需要遵循相应模板类型的编写规则,例如在包括明细列表的报表中使用需要添加 .detail 前缀,如 .detail.__NUMBER

使用 Excel 函数

在 Excel 格式的列表类模板中(包括明细列表、审批流程、相关项,以及 EXCEL 列表模板),您可以使用 Excel 函数。请注意对于应用在列的函数请至少包含两个单元格才可以正确计算,如下图所示。

对于应用在行的函数需特殊编写。请使用 {.__KEEP:(=XXX)} 的方式包裹函数(XXX为实际的函数)(此功能从 V3.2 开始支持),如下图所示。

排序 ~~v3.4

对于明细列表、审批流程、相关项这类包含多条记录的(列表),以及 EXCEL 列表(V3.8.4 开始支持),您可以指定字段排序规则。通过在字段变量后添加 :asc(正序)或 :desc (倒序)即可,例如 {.accountName:desc}

如有多个排序字段,其排序顺序为在模版中出现的前后顺序

常见问题

无法在线预览报表

对于 Excel、Word 格式的报表预览,请参考 文档预览 注意事项。

导出 PDF 格式报表出错

请参考 导出 PDF 格式 注意事项。

是否可以一次导出多个报表

可以。但系统并不直接支持此功能,需通过 FrontJS 的 FrontJS.DataList.exportReport 方法实现。

该文档内容对您是否有帮助?没有
您也可以通过 社区群组 向我们反馈问题
Updated 2024-11-08
目录