Hey 小伙伴们!看起来今天是个闲适的下午呢!要知道,下午茶后很容易晕晕乎乎的,嘿嘿!☀️但是,我告诉你,今天我要教你一个特别酷的技巧,就是用Python编程语言来批量生成Word合同哦!📝🚀
先别急,我们先来杯清茶🍵,然后马上开启这段奇妙的Python之旅吧!相信我,一杯茶的功夫,就能搞定一堆合同!💻
本文的最后,我们会提供用到的word和excel的文档哦!
准备工具:Python是我的大秘密武器!🐍
首先,我们需要准备两个重要的法宝:一是Python,二是一个闪亮的Word模板文件 (.docx)。大家都知道,Python是程序员的好朋友,无所不能👯♂️(如果没有Python基础的话,可以看我的趣学Python基础专栏);而Word模板文件则是各式各样、千奇百态的,让我们找一个顺眼的作为参考吧!
好!现在让我们来点这段python黑魔法,让合同如小猫一般乖乖跟着我们跳舞吧!
点燃魔力:Python代码登场!✨
开始写代码之前,记得先安装一下docx和pandas这两个库哦:
pip install python-docx pandas openpyxl
接下来,我们来看一下我们的Python代码:
import pandas as pd
from docx import Document
import os
def replace_and_underline(run, placeholder, replacement_text):
if placeholder in run.text:
replaced_text = run.text.replace(placeholder, replacement_text)
run.clear() # Clear the existing run
run.add_text(replaced_text) # Add the replaced text
run.underline = True # Set underline for the new run
def batch_create_word_by_template(clients_path, template_path, output_path):
clients = pd.read_excel(clients_path)
for index, client in clients.iterrows():
# 创建一个新的合同文档
doc = Document(template_path)
# 替换合同中的占位符并在替换后的文字下方加下划线
for paragraph in doc.paragraphs:
for run in paragraph.runs:
replace_and_underline(run, '【合同编号】', str(client['【合同编号】']))
replace_and_underline(run, '【采购方】', str(client['【采购方】']))
replace_and_underline(run, '【采购方地址】', str(client['【采购方地址】']))
replace_and_underline(run, '【采购方联系人】', str(client['【采购方联系人】']))
replace_and_underline(run, '【采购方电话】', str(client['【采购方电话】']))
replace_and_underline(run, '【产品名称】', str(client['【产品名称】']))
replace_and_underline(run, '【采购数量】', str(client['【采购数量】']))
replace_and_underline(run, '【采购单价】', str(client['【采购单价】']))
replace_and_underline(run, '【总价数字】', str(client['【总价数字】']))
replace_and_underline(run, '【总价大写】', str(client['【总价大写】']))
replace_and_underline(run, '【供货时限(天)】', str(client['【供货时限(天)】']))
# 保存生成的合同
output_filename = f"食品采购合同_{client['【采购方】']}.docx"
if not os.path.exists(output_path):
os.makedirs(output_path)
doc.save(os.path.join(output_path, output_filename))
print("所有合同已成功生成!")
# 示例用法
batch_create_word_by_template(
'C:/Users/olive/Desktop/合同模板和数据/食品采购合同数据表.xlsx',
'C:/Users/olive/Desktop/合同模板和数据/食品采购合同.docx',
'C:/Users/olive/Desktop/生成的合同')
代码解析
1、首先,导入了必要的库:
- pandas:用于读取Excel数据表。
- docx(python-docx库的一部分):用于对Word文档进行处理。
- os:用于创建目录和进行文件系统操作。2、然后,定义了辅助函数replace_and_underline:
- 此函数根据给定的占位符文本和替换文本,在替换后的文本下方添加下划线。3、接下来,定义了主函数batch_create_word_by_template:
- 该函数接受三个参数:客户数据表的文件路径(clients_path)、合同模板文件的路径(template_path)和输出路径(output_path)。
- 使用pandas读取Excel数据表,将数据存储在名为"clients"的DataFrame对象中。
- 遍历数据表中的每一行客户信息,生成合同文档:
- 针对每个客户,创建一个新的合同文档对象(doc)。
- 遍历合同中的段落(paragraphs)和运行(run),使用replace_and_underline辅助函数根据占位符和客户数据替换文本并添加下划线。
- 保存生成的合同文档,并将文件保存到指定的输出路径中。4、示例用法:
- 在示例中,我们调用batch_create_word_by_template函数来生成合同文档,并传入客户数据表的文件路径、合同模板文件的路径和输出路径。这段代码会将每个客户的合同生成为一个带有下划线的Word文档,并保存到指定的输出路径中。
激动人心的测试🌟
终于又进入到激动人心的测试阶段了,我们先准备两个文件,一个是word合同模板,一个是用于记录合同具体数据的excel文档:
这个合同模板总共有3页,我们就看和要替换数据有关的这第一页。带有【】的就是我们要替换的部分。
接着,我们看一下要替换的数据,打开我们的excel文档:
这张表记录了所有要替换的关键字的具体数据。
这两个文件,都放在我的桌面上的【合同模板和数据】文件夹下:
下载来,改一下我们的测试代码:
# 示例用法
batch_create_word_by_template(
'C:/Users/olive/Desktop/合同模板和数据/食品采购合同数据表.xlsx',
'C:/Users/olive/Desktop/合同模板和数据/食品采购合同.docx',
'C:/Users/olive/Desktop/生成的合同')
注意,要改成你自己的文件路径哦。
接下来,跑一下我们的代码吧,很快,在我的桌面上的这个文件夹下,生成了三份合同:
我们打开任何一个文档,看一下效果吧:
非常帮,数据都成功地被替换进来了。
总结:让我们一起迎接合同生成新时代!✨
所以,是不是觉得超级Cool呢?这招python黑魔法就是这么便捷,让合同生成不再费时费力了。快来尝试一下吧,不仅能提高工作效率,还能在生活中创造更多可能!☕✨!
最后提供文中用到的word和excel:
链接: https://pan.baidu.com/s/1OFnMSBzgqvU8Qd8BjheIPQ?pwd=cn5u 提取码: cn5u
--来自百度网盘超级会员v6的分享