Skip to content

类 Excel 打印报表

打印报表面向中国式复杂报表与单据(对账单、出入库单、工资条、统计表等):用类 Excel 的单元格网格设计模板,在单元格里填表达式绑定数据集字段,取数后自动分页、分组、汇总,并支持套打、浏览器打印、Excel / PDF / Word 导出。在「报表中心 → 打印报表」(/report/print)管理。

设计流程

  1. 在列表「新增」打印报表,填写名称、绑定数据集
  2. 点「设计」进入 Univer 单元格设计器(与 Excel 操作一致:合并单元格、字体、对齐、边框、行高列宽)。
  3. 在单元格里填入表达式绑定字段(见下文),从右侧「字段」面板点击可快速插入。
  4. 配置「页面设置」(纸张/方向/页边距/页眉页脚/套打底图/重复表头/强制分页/分组字段/组头组尾/页小计/总计)。
  5. 需要多 Sheet 时可新增工作表,分别维护网格与页面配置。
  6. 「预览」查看取数填充后的效果,「保存」。
  7. 复杂模板可配置多个数据集绑定、重复块、交叉表和子报表;运行时仍合并为同一安全渲染结果。

单元格表达式语法

语法含义用途
${field}明细字段,纵向扩展同一行的多个 ${} 组成「明细带」,按数据行数重复生成多行
#{field}标量字段,取首行值表头、单据信息区(如制单人、日期)
${param}参数命中已声明参数时按参数解析
${SUM(field)}聚合还支持 COUNT / AVG / MAX / MIN,标量、不扩展
${GROUP_SUM(field)}组小计还支持 GROUP_COUNT / GROUP_AVG / GROUP_MAX / GROUP_MIN
${PAGE_SUM(field)}页小计还支持 PAGE_COUNT / PAGE_AVG / PAGE_MAX / PAGE_MIN
${QRCODE(field)}二维码单元格HTML / Excel / PDF / Word 均按图形输出
${CODE128(field)}Code128 条码单元格适合单号、箱码、库位码;BARCODE(...) 为同义写法
普通文本字面量支持「前缀${field}后缀」混合文本

除表达式外,单元格还可声明为图片单元格(kind: image,配置图片 URL、宽高与填充方式 fit,套打 logo / 签章图常用)。

示例

ABC
1部门用户统计表(合并居中)
2部门人数占比
3${name}${value}${ratio}
4合计${SUM(value)}

第 3 行是「明细带」,取数后会按数据行数自动展开为多行;第 4 行的 ${SUM(value)} 自动汇总全部明细。带内的合并单元格会随每行克隆,非带区合并整体下移。横向标签类报表可把明细方向改为横向扩展列

参数

打印报表可声明参数(同数据集参数),渲染时注入到 ${param} 占位与页眉页脚。预览、列表导出、设计器导出前都会先弹出统一参数表单,按 string / number / boolean / date 自动渲染控件并做必填校验。

页面设置与套打

说明
纸张A4 / A3 / A5 / Letter
方向纵向 / 横向
页边距上/右/下/左(mm)
页眉 / 页脚文本,支持 ${param}{page} {pages} {date} 占位
重复表头指定模板行范围,每页自动重复
分页支持固定 rowsPerPage、按纸张高度自动分页、指定 pageBreaks 强制分页
分组支持 groupByFields、组头、组尾 / 组小计、页小计、总计
套打底图背景图 URL,叠加在表格下层,用于在预印单据/票据上精确套打

多数据集、交叉表与子报表

  • content.datasetBindings[] 用唯一 key 绑定数据集,可将模板参数映射到目标参数,并配置 rowLimitparentKey/parentField/childField 表达父子数据关系。
  • Sheet 可用 datasetKey 设置默认绑定,单元格也可覆盖;repeatBlocks[] 允许同一 Sheet 由不同数据集展开多个不重叠模板带。
  • detailDirection: 'crosstab' 使用 rowFieldscolumnFieldsvalueFields[{ field, aggregate }] 生成交叉表,可显示行/列总计。服务端限制动态列数(256)、总单元格数(10 万)和结果字节数(8MB),超预算直接失败,不截断成错误报表。
  • kind: 'subreport' 单元格通过 templateId、可选 datasetKeyparamBindings 嵌入另一个模板。服务端限制递归深度(最多 3 层)并检测循环引用;子报表仍执行目标模板和数据集权限校验。

预览与打印

  • 预览:调用渲染接口取数填充,按真实 pages[] 逐页还原 HTML(页眉、页脚、底图、页码、重复表头、页小计都会生效)。
  • 打印:预览页「打印」按钮调用浏览器打印,@media print 仅打印报表区域,可直接对准预印纸张。

Excel / PDF / Word 导出

打印报表可导出为 Excel(.xlsx)PDFWord(.docx),接入项目统一导出中心(导出实体 report.print)。明细行数 ≤ 800 时同步直出,超过则按导出中心容量策略转异步任务 + 下载中心取件。

  • Excel:服务端用 ExcelJS 还原多 Sheet 网格、合并、字体/对齐/底纹/边框、行高列宽、公式、数字格式、图片/二维码/条码、纸张与页面设置。
  • PDF:服务端用 PDFKit 按真实分页结果绘制文本表格、页眉页脚、页码、边框,并对合并单元格做合理降级。
  • Word:服务端生成原生 .docx,按渲染后的 Sheet/分页组织表格、页眉页脚、图片、二维码/条码和子报表;不是把 HTML 改扩展名。

与仪表盘的区别

仪表盘 / 大屏打印报表
形态图表 + 指标,屏幕浏览单元格表格,打印/单据
布局拖拽组件 / 自由画布Excel 单元格网格
典型场景看板、监控、大屏对账单、统计表、票据套打
导出PNG / Excel(数据集)Excel / PDF / Word / 打印

内置示例「部门用户统计表」演示了表头 + 明细纵向扩展 + 合计行(${SUM}),可直接打开参考。

权限

操作权限码
查看 / 预览 / 渲染 / 导出report:print:list
新增report:print:create
设计 / 编辑report:print:update
删除report:print:delete

列表「权限与转移」可直达资源治理管理该模板的 ACL 与所有权。

Built with VitePress for local documentation preview.