导出与打印
报表查看页的导出(Excel / Word / PDF / CSV / OFD)与打印入口、各格式的适用范围与限制、多 Sheet 与当前页的导出范围、超宽内容的打印处理方式。
概述
报表查看页工具栏提供「打印」和「导出」两个下拉按钮。导出由服务端按当前查询结果生成文件,支持 Excel、Word、PDF、CSV、OFD 五种格式;打印由服务端生成 PDF,再交给浏览器打印对话框或本机打印服务输出。
不同报表类型能用的格式不同:网格报表五种格式都可用,单据模板只能导出 Word 和 PDF,数据浏览报表只能导出明细 Excel,且不提供打印。
功能入口
- 查看页工具栏「打印」按钮:下拉项为「打印预览 (全部页)」「打印预览 (当前页)」「插件打印 (全部页)」「插件打印 (当前页)」。「当前页」两项只在分页查看方式下出现。
- 查看页工具栏「导出」按钮:下拉项见下文各格式说明。
- 是否显示这两个按钮:设计器「报表设置」>「工具栏」页签可按报表设置「打印按钮」「导出按钮」(跟随全局 / 显示 / 隐藏);全局默认在管理端「系统设置」>「报表」>「工具栏」。单据模板的设置入口名称为「页面设置」。
导出格式
| 格式 | 菜单项 | 适用报表 | 说明与限制 |
|---|---|---|---|
| Excel(.xlsx) | 导出Excel / 导出当前页Excel | 网格报表 | 多 Sheet 报表默认导出全部 Sheet,每个 Sheet 对应一个工作表。 |
| Word(.docx) | 导出Word / 导出当前页Word | 网格报表、单据模板 | 多 Sheet 报表默认导出全部 Sheet,按顺序拼接。 |
| 导出PDF / 导出当前页PDF | 网格报表、单据模板 | 多 Sheet 报表默认导出全部 Sheet,按顺序拼接;字体是否嵌入见 PDF 字体嵌入。 | |
| CSV | 导出CSV / 导出当前页CSV | 网格报表 | 只输出单元格显示值;隐藏的行和列不输出;文件编码为 UTF-8 并带 BOM,Excel 直接打开中文不乱码;不含图表;多 Sheet 报表只导出当前 Sheet。 |
| OFD(GB/T 33190) | 导出OFD / 导出当前页OFD | 网格报表 | 多 Sheet 报表只导出当前 Sheet;单据模板暂不支持(菜单不显示,接口直调会提示「单据报表暂不支持导出 OFD」);不支持口令加密,模板配置了导出密码时会报错而不是输出未加密文件。 |
提示:「导出当前页…」系列只在分页查看方式下出现,导出的是当前所在页。查看方式设为「全部」时只有整份导出。
多 Sheet 报表的导出范围
多 Sheet 报表的菜单项会标注范围,例如「导出Excel (全部Sheet)」「导出CSV (当前Sheet)」。Excel、Word、PDF 另有「导出Excel (仅当前Sheet)」「导出Word (仅当前Sheet)」「导出PDF (仅当前Sheet)」三项。导出全部 Sheet 时,各 Sheet 使用同一份查询参数。
数据浏览报表
开启了「数据浏览报表」的网格报表只提供「导出明细Excel」一项,不提供打印和其他格式。点击后系统创建后台导出任务,弹出「导出明细Excel」对话框显示进度,完成后自动下载。如果在「导出数据集」中指定了另一个数据集,导出时用它的 SQL 取数(要求与主数据集使用同一数据连接,输出列名覆盖模板引用的字段名)。设置位置:设计器「报表设置」>「其他设置」>「查询设置」。
图表
Excel、PDF、Word、OFD 导出中的图表由服务端渲染,依赖服务器上安装 Node.js(版本不低于 16)。未安装时图表区域导出为空白。Node.js 不在系统路径时,可用配置项 app.chart.ssr.node-path 指定可执行文件路径;总开关 app.chart.ssr.enabled 默认开启,整批图表渲染超时默认 20 秒(app.chart.ssr.timeout-seconds)。
打印方式
点击「打印」后,服务端先生成一份 PDF,再按下表输出:
| 菜单项 | 行为 |
|---|---|
| 打印预览 (全部页) / (当前页) | 在页面内加载 PDF,弹出浏览器的系统打印对话框。 |
| 插件打印 (全部页) / (当前页) | 报表设置里「打印预览」为开启(默认)或未填「打印机名称」时,与上一项相同,同样弹出系统打印对话框;「打印预览」关闭且配置了打印机时,通过本机打印服务直接送到该打印机。详见 插件打印。 |
「打印配置」在设计器「报表设置」>「页面设置」页签中,包含「打印机名称」「打印份数」(1 到 100,仅插件打印使用)和「打印预览」开关。
内容超出页面宽度
网格报表的内容宽度大于纸张可打印宽度时,点击打印会弹出「内容超出页面宽度」对话框,需要选择处理方式:
| 选项 | 效果 |
|---|---|
| 等比例缩小(默认) | 整体按比例缩放,列宽比例不变。 |
| 压缩表格列宽 | 优先压缩列宽,使内容贴合页面宽度;单列最小宽度为 24pt,压缩不到位时按比例缩放兜底。 |
导出(非打印)遇到超宽内容时不缩放,而是自动加宽纸张以容纳完整内容。单据模板不弹出该对话框。
注意:浏览器打印对话框默认的「适应页面 / 缩放」选项会改变输出尺寸。对位精度要求高的单据,请在打印对话框中选择「实际大小 / 100%」。
文件名
导出文件名依次取:请求指定的名称、报表标题、模板文件名,都没有时为「报表」。
注意事项
注意:导出与打印遵循查看权限,用户必须对该报表有查看权限才能导出,嵌入访问则只能导出授权范围内的报表。
注意:每次导出和打印都会写入操作日志(动作分别记为 export、print)。
提示:数据量很大的明细列表可以使用「数据浏览报表」,走异步明细导出。