灵犀claw打通py使用最后一公里
Lv.2潜力创作者
昨天有朋友问,如何批量生成合同和送货单
https://bbs.wps.cn/topic/90404
由于数据关系有点复杂,且模板里可能多次使用数据,所以用docxtpl代替邮件合并
import pandas as pd
from docxtpl import DocxTemplate
df1, df2, df3 = pd.read_excel('采购明细.xls', sheet_name=None).values()
tpl2 = DocxTemplate('合同模板.docx')
tpl3 = DocxTemplate('送货单模板.docx')
for i, j in df2.groupby('合同编号'):
context = {
'x': df1[df1['合同编号'] == i].to_dict(orient='records')[0],
'y': j.to_dict('records'),
}
tpl2.render(context)
tpl2.save(f'output/合同_{i}.docx')
for i, j in df3.groupby('合同编号'):
context = {
'x': df1[df1['合同编号'] == i].to_dict(orient='records')[0],
'y': j.to_dict('records'),
}
tpl3.render(context)
tpl3.save(f'output/送货单_{i}.docx')代码比较简陋,大概意思是:
用pandas读取数据源,这里有三张表,总表、合同明细、送货单明细,以合同编号作为主键,总表里每行一个合同编号,明细表里一个合同编号对应多行记录
用docxtpl读取两个模板
分别对两张明细表,以合同编号进行groupby,之后循环,用对应的模板批量生成结果
在模板里使用context内构造的数据,可以用for循环生成不定行数的表格
都是最简单的应用,但是,对于大多数不熟悉py脚本的朋友来说,怎么使用是个问题
因为先要安装python,选择版本、设置环境变量
安装依赖,代码里用到了pandas和docxtpl,但对于xls格式的数据源,还需要安装xlrd
另外pip安装依赖最好使用国内源
这样看来,对于新手,即使拿到代码,要用起来还是稍显麻烦的
但现在有了灵犀claw
把代码、数据源、模板放到一个文件夹里,直接问灵犀claw
根据桌面上的test文件夹,创建skill,目的是在py里使用docxtpl根据合同模板和送货单模板,用指定的数据源批量生成合同和送货单,这里以"采购明细.xls"为例,以后会指定不同的数据源
灵犀claw会安装依赖,解决运行前的所有问题
另外,如果你需要修改读取数据的方式,比如pandas改用openpyxl
或数据格式有变化
或要解决空数据在模板里显示null,日期格式需要去掉时间等问题
都可以直接让灵犀claw去改
也就是说,即使我把脚本打包成exe,也远不及通过灵犀claw使用来的灵活
灵犀claw打通了新手使用脚本最后一公里的问题,没有门槛轻松上手
拿到py就能用起来,以后再研究进一步的优化🎉
Lv.2潜力创作者
Lv.2潜力创作者