当前位置: 首页 > news >正文

影刀RPA Word模板自动填写:批量生成合同报告


title: “影刀RPA Word模板自动填写:批量生成合同报告”
date: 2026-07-01
author: 林焱

影刀RPA Word模板自动填写:批量生成合同报告

HR每月要生成200份员工劳动合同,财务每周要输出50份项目报告,这类"格式固定、只有数据不同"的文档,用影刀配合python-docx模板引擎可以10分钟批量搞定。

什么情况用什么

适合批量生成Word的场景:

  • 劳动合同、录用通知书,每人一份
  • 销售报价单、项目合同,每单一份
  • 周报月报,格式固定只换数据
  • 证书、荣誉奖状批量生成

不适合的场景:

  • 文档格式每次都不一样,需要人工排版
  • 内容逻辑复杂,需要人工判断写什么

怎么做

方法1:使用python-docx直接操作(推荐)

拼多多店群自动化上架方案

先手工做好Word模板,用特殊占位符标记变量位置,影刀批量替换。

第一步:制作Word模板

在Word里把需要替换的位置用双花括号标记,例如:

甲方:{{company_name}} 乙方:{{employee_name}} 入职日期:{{start_date}} 月薪:{{salary}} 元

第二步:准备数据源(Excel)

employee_namecompany_namestart_datesalary
张三示例科技有限公司2024年7月1日8000
李四示例科技有限公司2024年7月1日10000

【影刀操作】

  1. 新建流程「批量生成合同」
  2. 添加【读取Excel】指令
    • 文件路径:C:\员工数据\员工列表.xlsx
    • 工作表:Sheet1
    • 保存结果:变量employees
  3. 添加【循环】指令,遍历变量employees
    • 循环变量:employee
  4. 在循环内添加【Python】指令
    fromdocximportDocumentimportcopy# 读取模板doc=Document(r'C:\模板\合同模板.docx')# 替换变量replacements={'{{employee_name}}':employee['employee_name'],'{{company_name}}':employee['company_name'],'{{start_date}}':employee['start_date'],'{{salary}}':str(employee['salary'])}# 替换段落中的文本forparaindoc.paragraphs:forkey,valueinreplacements.items():ifkeyinpara.text:forruninpara.runs:run.text=run.text.replace(key,value)# 替换表格中的文本fortableindoc.tables:forrowintable.rows:forcellinrow.cells:forparaincell.paragraphs:forkey,valueinreplacements.items():ifkeyinpara.text:forruninpara.runs:run.text=run.text.replace(key,value)# 保存到以员工名字命名的文件output_path=f"C:\\合同输出\\{employee['employee_name']}_劳动合同.docx"doc.save(output_path)print(f"已生成:{output_path}")
  5. 循环结束后添加【写入日志】:共生成 {员工总数} 份合同

方法2:使用docxtpl模板引擎(更强大)

docxtpl支持Jinja2语法,可以在模板里写条件判断和循环,更灵活。

模板写法(支持条件):

{{employee_name}} 同志: 您的岗位为:{{position}} {% if is_probation %} 试用期:3个月,试用期薪资:{{trial_salary}}元 {% endif %} 月薪:{{salary}} 元

【影刀操作】

  1. 添加【Python】指令
    fromdocxtplimportDocxTemplate tpl=DocxTemplate(r'C:\模板\合同模板_tpl.docx')context={'employee_name':employee['employee_name'],'position':employee['position'],'salary':employee['salary'],![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d3997665cd704a57b3f0f07825617209.png#pic_center)'is_probation':employee['is_probation']=='是','trial_salary':employee['trial_salary']}tpl.render(context)output_path=f"C:\\合同输出\\{employee['employee_name']}_合同.docx"tpl.save(output_path)

方法3:生成Word后转PDF

合同通常要发PDF,生成Word后自动转换。

【影刀操作】

  1. 在保存Word后添加【Python】指令
    importsubprocessimportos# 用LibreOffice转PDF(需要安装LibreOffice)word_path=f"C:\\合同输出\\{employee['employee_name']}_劳动合同.docx"output_dir=r'C:\合同输出\PDF'os.makedirs(output_dir,exist_ok=True)result=subprocess.run([r'C:\Program Files\LibreOffice\program\soffice.exe','--headless','--convert-to','pdf','--outdir',output_dir,word_path],capture_output=True,text=True)ifresult.returncode==0:print(f'PDF转换成功')else:print(f'PDF转换失败:{result.stderr}')

有什么坑

坑1:替换后格式丢失

原模板里"员工姓名"是加粗红色,替换后变成普通黑字。

TEMU店群如何管理运营?

原因:Word会把一个段落拆成多个run,占位符被拆开了,比如{{name}}被分成{{name}}三个run,单独替换每个run的text找不到完整占位符。

解决方法:先把段落所有run的text合并,找到占位符位置后,清空所有run的text,只在第一个run里写入替换后的完整文本。或者用docxtpl,它内部处理了这个问题。

坑2:表格里的内容替换不了

只替换了段落文本,忘了遍历表格。模板里如果变量在表格单元格里,必须单独遍历doc.tables

坑3:中文乱码

保存路径或数据里有中文,在某些系统上会乱码。

解决方法:打开文件时统一指定encoding='utf-8',路径用原始字符串r''

坑4:日期格式不统一

Excel里的日期是2024-07-01,合同里要求2024年7月1日

解决方法:在Python里做格式转换:

fromdatetimeimportdatetime date_str=datetime.strptime(employee['start_date'],'%Y-%m-%d').strftime('%Y年%-m月%-d日')

总结

Word批量生成的核心是:设计好模板、准备好数据、写好替换逻辑。docxtpl比直接用python-docx省事很多,遇到格式复杂的模板首选它。100份合同用影刀跑,3分钟搞定。

http://www.jsqmd.com/news/1167328/

相关文章:

  • 技术视角下的Syncthing Android:构建去中心化文件同步生态
  • 2026石家庄考研辅导机构TOP10推荐,翼程教育合规办学口碑领跑 - 商业科技观察
  • 2026 全国全品类地面材料服务商参考:实木地板 / SPC 石塑锁扣 / PVC 地胶 / 运动地胶一体化供应 - 海棠依旧大
  • 为什么顶尖AI团队已弃用GPT-4 Turbo?Gemini 2.5 Pro在逻辑链完整性、跨文档引用溯源、符号推理准确率上实现代际碾压——附可复现测评代码库(Star超5k,仅开放72小时)
  • 2026郑州黄金回收避坑,靠谱回收商家推荐 - 奢侈品回收评测
  • 四会市水质、空气、高危安全检测+泳池办证三项检测指南 - 第三方检测机构
  • qmc-decoder终极指南:3分钟解锁QQ音乐加密音频文件
  • 2026版AI岗位爆发式增长,月薪6w+!小白/程序员大模型入门进阶全攻略
  • Python异步编程在运维工具中的应用:asyncio与aiohttp构建高性能并发巡检系统
  • 英雄联盟对局先知:选人阶段精准识别队友实力,轻松判断谁是上等马
  • (4-1)背景与历史
  • 2026杭州靠谱防水服务商:卫生间免砸砖、外墙、地下室、楼顶渗漏维修 本地正规报价(7月最新) - 吉林同城获客
  • 2026年高性价比真人数字人制作平台 TOP5:个人创作者实用选型参考 - SNKXD
  • 2026年7月最新石家庄雅典官方售后服务网点地址及客服电话一览 - 亨得利官方服务中心
  • groovy脚本统计jenkins_tag与构建机的映射关系
  • 2026 年国内真人数字人制作平台TOP10:晟诺科讯达第一,企业选型正规参考 - SNKXD
  • 高质量MMD制作技术解析:从模型渲染到后期合成
  • 大数据量场景下sql查询中in查询项过多时很慢的其他解决方式
  • 2026 年 7 月山西工矿轴承采购合作企业:山西艾弗艾基进口设备贸易有限公司 - 信息热点
  • 积家官方服务项目及价格查询|热线电话与门店地址权威信息公告(2026年7月最新) - 积家官方售后服务中心
  • 2026汕头靠谱防水服务商:卫生间免砸砖、外墙、地下室、楼顶渗漏维修 本地正规报价(7月最新) - 吉林同城获客
  • 输送线厂家实地考察别白跑!过来人总结 8 个考察重点,避开 90% 采购大坑
  • 如何用Unlock Music终极解决音乐格式限制:3种快速免费的解密方法
  • 【Gemini Gmail集成实战指南】:20年谷歌生态专家亲授5大避坑要点与3步自动化部署法
  • 2026 旧房改造哪家真靠谱广州二手房翻新全攻略深度详解 - 优企甄选
  • 终极指南:如何让2007-2017年老旧Mac免费升级最新macOS系统
  • 2026年7月泰州姜堰区装备制造与文旅品牌优选5家SEO/GEO服务商综合测评|AI搜索品牌曝光与企业科学选型指南 - 招财兔数字员工
  • 卡地亚中国官方售后服务中心|地址与联系电话权威信息声明(2026年7月更新) - 卡地亚服务中心
  • 代码生成只是起点,企业 AI 落地的四大无解核心挑战
  • 3步自动化黑苹果安装:OpCore Simplify终极配置指南