python 打印docx文档并传参

import win32api
import win32print

from docxtpl import DocxTemplate

order = {
    "create_time": "2023-05-08 17:21:32",
    "delivery_time": "2023-05-08 17:44:24",
    "express_no": "123456",
    "id": 20,
    "order_no": "20230508172132172912436",
    "payment_time": "2023-05-08 17:44:24",
    "remarks": "",
    "state": 1,
    "total_price": 7200,
    "update_time": "2023-05-08 18:17:43.195415",
    "nickname": "昵称",
    "username": "手机号",
    "address_name": "河南省谷南山",
    "delivery_name": "啦啦啦",
    "pay_status": "1",
    "phone": "123456789",
    "goods_list": [
        {
            "number": 1,
            "tags": "的高度官方的",
            "price": "3100.00",
            "title": "的双方各嘿嘿飞哥",
            "total_price": "3100.00"
        },
        {
            
            "number": 1,
            "tags": "胜多负少的",
            "price": "4100.00",
            "title": "是否是发送到发送到发送到",
            "total_price": "4100.00"
        }
    ]
}
template_path = r"订货清单模板.docx"
filename = f'订单{order.get("order_no")}.docx'

doc = DocxTemplate(template_path)  # 对要操作的docx文档进行初始化
context = {
    'U': order.get('nickname', order.get('username')),
    'C': order.get('create_time'),
    'O': order.get('order_no'),
    'P': order.get('payment_time'),
    'D': order.get('delivery_time'),
    'E': order.get('express_no'),
    'A': order.get('address_name'),
    'R': order.get('delivery_name'),
    'T': order.get('phone'),
    'TP': order.get('total_price'),
    'more': order.get('goods_list'),
}  # company_name 是存在于1.docx文档里面的变量,就像这样{{company_name}},直接放在1.docx文件的明确位置就行
doc.render(context)  # 这里是有jinjia2的模板语言进行变量的替换,然后便可以在1.docx文档里面看到{{company_name}}变成了World company
doc.save(filename)  # 保存

win32api.ShellExecute(
    0,          # 指定父窗口句柄
    "print",    # 指定动作, 譬如: open、print
    filename,   # 指定要打开的文件或程序
    '/d:"%s"' % win32print.GetDefaultPrinter(),     # 给要打开的程序指定参数(此处为选择打印机)
    ".",        # 缺省目录
    0           # 打开选项
)

特别鸣谢:
远哥支持!!! @烟墨

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值