Skip to content

可视化拖拽报表设计器

可视化拖拽报表设计器是一款面向 Odoo 的所见即所得报表设计工具:无需编写 QWeb 代码,从调色板拖入文本、图片、条形码、二维码等元素即可设计采购订单、销售小票等各类打印单据。设计结果以 JSON 形式保存,打印时在服务端编译为 wkhtmltopdf 报表,支持毫米级精确定位、明细表格与金额公式、中文大写金额;模板保存后自动生成对应单据上的「打印」按钮。

可视化报表设计

快速上手

  1. 打开「报表设计器 → 报表模板」菜单,新建模板,填写模板名称、选择主模型与纸张格式;
  2. 点击「设计」进入可视化设计器:从调色板拖入元素,绑定字段或公式,配置明细表格;
  3. 点击「保存」,系统自动同步打印动作;回到对应单据,在「打印」菜单下选择模板名即可输出 PDF;
  4. 需要核对效果时,点击设计器工具栏「预览」,选择一条单据记录实时渲染 PDF。

报表模板

1. 模板列表

说明
模板名称报表的显示名称,也是单据「打印」菜单里的入口名称
主模型报表的数据来源模型(如采购订单 purchase.order)
纸张格式打印纸型;保存模板时自动复制一份专用纸型(见纸张格式
设计一键进入设计器,仅「报表设计器管理员」组可见

2. 新建模板

属性说明示例
模板名称报表的显示名称,必填采购订单
主模型报表挂载的模型,必填;决定单据上出现打印按钮的模型purchase.order
纸张格式打印纸型,可留空(默认按 A4 宽度布局)A4
报表动作只读;模板创建时自动生成主模型上的「打印」报表动作采购订单 (purchase.order)
设计数据只读;由设计器维护的设计 JSON,一般无需手改

模板删除时自动级联删除关联的打印动作、薄壳视图与单据「动作」菜单里的「设计报表」入口;此前生成过的旧打印链接会返回友好的「报表已删除」提示页。

3. 预置模板

模块内置两个可直接使用或修改的示例模板:

模板主模型纸型说明
采购订单purchase.orderA4编号条形码 + 二维码 + 产品图片列 + 大写金额 + 签字栏
销售小票sale.order80×210mm窄票,编号条形码 + 大写金额

设计器界面

设计器分为三部分:左侧元素调色板、中间画布(页眉区 / 表格区 / 页脚区 + 标尺)、右侧属性面板。

1. 工具栏

按钮 / 控件说明
返回回到上一页(模板列表)
撤销 / 重做撤销 / 重做最近的设计修改;快捷键 Ctrl+Z、Ctrl+Shift+Z 或 Ctrl+Y
缩放画布缩放:50% / 75% / 100% / 150% / 200%
保存校验设计并保存到模板;设计不合法时提示「设计有误」
预览弹出记录选择框,选中一条主模型单据后在新标签页打开 PDF

2. 元素调色板

从左侧调色板把元素拖到画布页眉区 / 页脚区的目标位置松开即可放置(落点即元素坐标,自动钳制在画布内)。

元素说明
文本(Text)静态文字、字段或公式内容,可设字号 / 对齐 / 加粗
图片(Image)绑定二进制图片字段,或上传静态图片 / 填写图片 URL
条形码(Barcode)code128 / EAN13 / code39,条宽(模块宽度)与对齐可调
二维码(QR code)绑定单据编号等字段生成二维码
横线(Line)1px 黑色横线,常用于签字栏
矩形(Rectangle)1px 黑色边框矩形

3. 画布与标尺

区域说明
页眉区页面顶部固定区域,元素按 mm 坐标绝对定位
表格区明细表格(一对多行),走文档流,明细行数多时自动分页
页脚区页面底部固定区域(大写金额、签字栏等)
标尺横 / 纵标尺,每 10mm 一个刻度,元素坐标精确到 mm
吸附参考线拖拽元素时自动吸附画布左右边缘 / 中心与其他元素的边缘 / 中心,参考线按类别区分颜色
网格画布点阵网格随缩放联动

点击画布空白处取消选中,右侧属性面板回到「页面设置」。

4. 属性面板

未选中任何元素时显示页面级设置:

设置说明
页眉高度(mm) / 页脚高度(mm)对应区块的高度
行高(mm)明细表格行高(绑定行字段后显示)
字号(pt)表格字号(绑定行字段后显示)
显示边框表格单元格边框开关(绑定行字段后显示)

5. 快捷键

快捷键作用
Ctrl+Z撤销
Ctrl+Shift+Z / Ctrl+Y重做
Delete / Backspace删除选中的元素或表格列

焦点在输入框 / 下拉框内时,快捷键保留浏览器原生行为(如输入框内 Ctrl+Z 撤销文字)。

元素详解

所有元素共享位置与样式属性,选中元素后可在右侧面板精确输入。

1. 通用属性

属性说明
X / Y(mm)元素左上角坐标,相对所在区块(页眉 / 页脚)
宽 / 高(mm)元素尺寸
字号(pt)文本类元素字号
对齐左 / 中 / 右
加粗文本加粗

2. 文本

属性说明
自定义文字直接输入静态文本,输入后覆盖字段 / 公式绑定
绑定字段从字段选择器选择主模型字段,支持点路径(如 partner_id.name)
公式选择内置公式(见内置公式),选公式后覆盖字段绑定
日期格式绑定日期 / 日期时间字段时显示,支持预设与 strftime 自定义(见日期格式

三种绑定方式互斥,后设置者生效。字段值按类型自动格式化:日期 / 金额 / 选项标签 / 是·否 / 关联单据显示名等。

3. 图片

属性说明
绑定字段二进制图片字段,等比缩放铺满元素框
上传图片选择本地图片文件存入设计数据(不选则用绑定字段)
图片 URL填写图片外链,优先于上传文件;打印时服务端下载

4. 条形码

属性说明
绑定字段条码内容来源(如单据编号)
条码类型code128 / EAN13 / code39
条宽(mm)条码模块宽度,默认 0.3;条码长度 = 内容模块数 × 条宽
对齐条码按自然尺寸输出,窄于元素框时按左 / 中 / 右对齐

条宽建议不小于 0.25mm 以保证扫码可靠性;内容与条码类型不匹配(如 EAN13 绑定非纯数字字段)时该条码打印为空。

5. 二维码

绑定字段后按其值生成二维码,等比铺满元素框,常用于单据编号。

6. 横线与矩形

元素说明
横线(Line)1px 黑色横线,元素高度即线所在位置;签字栏场景在横线下方配一行「制单人 / 审核」文本
矩形(Rectangle)1px 黑色边框矩形

数据绑定与公式

1. 绑定方式

绑定说明
自定义文字(static)静态文本,适合标题、标签
字段(field)绑定主模型任意字段,支持点路径,按字段类型自动格式化
公式(formula)内置公式,取值逻辑见下表

2. 内置公式

公式说明
amount_total合计金额:取表格中第一个勾选「汇总」的列的合计值;没有汇总列时回退取单据的 amount_total 字段
amount_in_words将合计金额转换为中文大写(如「壹仟贰佰叁拾肆元整」)
date_today今天的日期
company_name单据所属公司名称;单据未设置公司时取当前公司
user_name当前登录用户的姓名
stamp条件图章:仅当条件满足时显示图章图片(合计 > 0,或绑定的布尔字段为真),以 85% 透明度渲染,适合「已付款」「已审核」等图章

stamp 公式仅适用于文本元素。图章条件为「字段为真」时,需选择主模型上的一个布尔字段。

3. 日期格式

绑定日期 / 日期时间字段的文本元素与表格列支持自定义日期格式,在属性面板(元素)或列设置面板(列)中配置:

选项输出示例strftime 模式
默认(跟随语言)按当前用户语言默认格式显示
2026-08-092026-08-09%Y-%m-%d
2026/08/092026/08/09%Y/%m/%d
2026-08-09 10:232026-08-09 10:23%Y-%m-%d %H:%M
2026/08/09 10:232026/08/09 10:23%Y/%m/%d %H:%M
自定义格式...输入 strftime 模式,如 %Y年%m月%d日 → 2026年08月09日自定义

常用 strftime 指令:

指令含义示例
%Y / %y四位 / 两位年份2026 / 26
%m / %d两位月份 / 日期08 / 09
%H / %M / %S时(24 小时制)/ 分 / 秒10 / 23 / 45
%A / %a星期全称 / 缩写星期一 / 周一

说明一:日期时间值按当前用户时区格式化(Odoo 内部按 UTC 存储,直接格式化会偏差时区)。

说明二:非法格式模式(平台无法识别的指令)不会报错,自动回退为语言默认格式。

说明三:日期格式仅对日期 / 日期时间字段值生效,其他字段类型不受影响;旧模板无需重新绑定字段,打开设计器即可设置。

明细表格

1. 绑定行字段

在表格区点击「+ 选择行字段(一对多)」,从主模型的一对多字段中选择(如采购订单的 order_line),系统自动识别行模型。

2. 添加与编辑列

操作说明
添加列点击「+ 添加列」,从行模型字段中选择,支持点路径(如 product_id.display_name)
列标题点击列头卡片,直接修改标题文字
列宽拖拽列头右侧手柄调整,或选中列后在右侧面板输入精确宽度
水平对齐左 / 中 / 右(未设置时默认居中)
垂直对齐上 / 中 / 下
汇总仅数值类列(float / integer / monetary)显示「汇总」勾选框;勾选后在 PDF 表尾生成合计行
日期格式日期 / 日期时间列可选预设或自定义 strftime 格式(见日期格式
图片列绑定二进制图片字段时渲染为单元格缩略图(如产品图片),也支持图片 URL 文本字段
删除列列头 ✕ 按钮、右侧面板「删除此列」或选中后按 Delete

点击列头卡片选中列后,右侧面板显示列设置;移除行字段绑定会同时清空全部列。

3. 表格样式

属性说明
行高(mm)默认 8
字号(pt)默认 10
显示边框默认开启

说明一:合计行始终存在——无汇总列时首列显示「合计」字样;汇总列以加粗显示求和结果,币种取行上币种,未设置时回退公司币种。

说明二:列宽按设计比例整体缩放,铺满纸张可用宽度。

说明三:明细行数超出页高时自动分页,但第二页起不重复表头(wkhtmltopdf 渲染限制);长表建议把标题、单据信息等放在页眉区。

能力说明
打印按钮模板保存后自动生成主模型上的「打印」报表动作;单据「打印」菜单下选择模板名即可输出 PDF
打印文件名默认「单据名称 + 空格 + 模板名」,如 PO00001 采购订单
设计器入口同时自动生成单据表单「动作」菜单下的「设计报表:<模板名>」,一步直达设计器
设计器预览工具栏「预览」→ 选择一条单据 → 新标签页打开 PDF(与打印走同一渲染链路)

纸张格式

主题说明
预置纸型模块提供 A5(dpi=96)与 80×210mm 小票两种纸型
自定义纸型可在技术设置中创建自定义纸型(如 80×210mm 销售小票)
专用纸型模板保存时自动复制所选纸型为「<纸型名> - 报表设计器」:dpi=96、关闭收缩缩放、竖版,保证设计画布与 PDF 输出 1:1 对应;多个模板共享同名专用纸型

专用纸型被手动改坏(如方向改成横版)时,下次保存模板会自动原地修正。

权限说明

用户组权限
报表设计器管理员查看 / 新建 / 修改 / 删除报表模板;打开设计器(列表「设计」按钮、表单「设计」按钮与单据「动作」菜单入口均校验该组)
内部用户仅可查看报表模板列表,不影响单据上的打印按钮使用

常见问题

问题说明
打印按钮在哪里?打开对应主模型的单据,点击顶部「打印」菜单,选择模板名;打印文件名默认「单据名称 + 模板名」
设计器提示无权限?当前用户需加入「报表设计器管理员」组(设置 → 用户 → 编辑所属用户组)
打印内容被缩放或错位?确认模板「纸张格式」为专用纸型(名称含「- 报表设计器」);保存模板会自动生成或修正专用纸型
长表格第二页没有表头?当前渲染器分页后不重复表头,建议把关键表头信息(单据编号、标题等)放到页眉区
日期想显示成「2026年08月09日」?选中绑定日期字段的元素(或日期列),「日期格式」下拉选择「自定义格式...」,输入 %Y年%m月%d日(见日期格式
条码打印为空?检查绑定字段内容与条码类型是否匹配(如 EAN13 要求纯数字)
图片列不显示?该行字段无图片值,或图片 URL 下载失败(服务端日志有警告)
模板删除后旧打印链接?返回友好的「报表已删除」提示页,不影响系统其他功能

视频讲解

学习交流

操作预览