FrappeExcel导出模版使用说明

安装好 Excel 导出模块后,我们需要在 Excel 导出模版里新建一个模版

一、模版变量处理

1. 当前单据变量

  • 变量名称:doc
  • 变量表示格式:使用双花括号{{}}表示变量。

示例:

  1. 普通字段引用
    使用{{doc.字段名}}引用普通字段(非明细表)。
    示例:{{doc.customer}} 表示当前单据的客户字段。
  2. 支持 Jinja 表达式变量
    通过返回文本的 Python 脚本实现复杂功能。

用途

函数

示例

显示链接的关联字段 (Excel VLOOKUP)

frappe.db.get_value

{{frappe.db.get_value("Address", doc.shipping_address, "country")}} 根据地址编号返回国家

翻译字段值

(表达式)

{{(row.item_name)}} 翻译明细行物料名称

金额大写

doc.money_in_words

{{doc.money_in_words(doc.total)}}

单据制单人

doc.get_owner_username

{{doc.get_owner_username()}}

单据审批人

doc.get_submit_username

{{doc.get_submit_username()}}

明细表字段汇总

frappe.db.get_value

{{frappe.db.get_value('Delivery Note Item', {'parent': doc.name}, 'sum(total_weight)')}}

注意:

  • 文本与变量混合:支持在同一单元中混合文本与变量。
    示例:客户名称: {{doc.customer_name}}
  • 多个变量:一个文本串中可包含多个变量。

2. 明细表(子表)处理

  1. 明细行定义
    定义模版时,在输出明细行内容的第1列(A列)在审阅里填写批注:row=doc.items。
    • row= 为固定内容,用于绑定子表字段。
    • doc.items 表示该明细行对应的子表字段名。

  1. 明细行变量
    • 当前明细行对象变量为 row。
      示例:{{row.item_code}} 表示明细行的编号字段。

  1. 动态行生成
    • 模板定义时,明细行内容仅保留一行。
    • 根据实际明细行数量,代码会自动新增行并向下移动模板中的内容。

3. 特殊处理

  1. 引用不存在的字段
    • 输出结果为原变量字符串。
    • 错误信息记录在系统日志中。
  1. 空值字段
    • 输出为空字符串。
  1. 地址信息
    • 地址内容可能包含换行符,需将单元格格式设置为“自动换行”。
    • 可同时合并上下单元格以显示完整地址。
  1. 图片字段
    • 图片字段变量示例:{{row.image}}
    • 支持 .png, .jpg, .img 格式图片,自动加载到对应单元格。
    • 注意:图片尺寸需合理。

二、维护单据类型Excel导出模板

1. 模板配置项

  • 单据类型
    • 模板名称:上传的 Excel 模板文件名称。
  • 多语言支持
    • 如果勾选,导出时用户需选择语言。
    • 模板中调用 _() 函数翻译标签。
      示例:{{_('Item Code')}}
  • 导出文件名
    • 使用 Python 表达式生成文件名,默认格式为:
      {{template_name}}{{doc.name}}.{{path[-4:]}}
      示例:模板名_单据名.文件扩展名
      可使用以下变量:
      • doc
      • template_name
      • path(包含文件扩展名的文件路径)

FrappeExcel导出模版使用说明
谢坪川 2024年12月30日
分析这篇文章

存档
登录 留下评论
销售业务