8.如何用ChatGPT批量生成Word合同
这是零基础玩ChatGPT+Python——办公自动化的第8节:利用ChatGPT生成Python代码,批量生成Word合同。
教程目的: 初步掌握用ChatGPT批量操作Word文档,节省时间
阅读对象: 需要用ChatGPT提高工作效率、摆脱重复无聊工作、无Python基础、或Python入门者。
文章目录
场景:
需要做50份合同。 除了公司名称不同以外,合同的其它部分,都是一样的。
使用ChatGPT前: 做好一个合同模板,复制50份,然后一个个修改公司名称。至少需要10分钟。
使用ChatGPT后: 做好一个合同模板,让ChatGPT生成Python代码,批量复制、修改模板,不到1秒搞定。
一、软件准备
1.1 ChatGPT账号。
如果没有账号,可以直接使用葱因智能(每天签到可以免费用10次): http://www.congyin-ai.com/#/login/register?code=c2Fpd2Vu
1.2 vscode:免费。 参考安装教程: http://yesaiwen.com/how-to-use-chatgpt-coding-python/
二、素材准备
在下面的这个链接里,找到相应的素材地址,下载并解压:
http://yesaiwen.com/chatgpt-python-resources/
素材内容:
有2个文件。 一个是包含50个公司名称的Excel表格,一个是合同模板。
下载后,解压,获取Excel文件夹的位置,和工资总表的位置。例如:
模板文件位置在C:\Users\seven2024\Desktop\text\软件服务合同.docx
公司名称:C:\Users\seven2024\Desktop\text\公司名称.xlsx
三、操作步骤
安装模块
首先需要在vscode里,安装2个模块。 在vscode的终端里,输入这1个命令,后按回车:
pip install python-docx openpyxl
3.1.打开ChatGPT,输入提示词
作为一个Python程序员,需要生成50份基于模板的合同。
模板文件位置在C:\Users\seven2024\Desktop\text\软件服务合同.docx。
在模板中,需将“智云软件服务有限公司”替换所有的“AA”,并将从Excel文件(C:\Users\seven2024\Desktop\text\公司名称.xlsx)中读取的“公司名称”列数据替换所有的“BB”。
新生成的合同需要命名为"公司名称+2023服务合同",并保存在原位置。保持模板格式不变,只修改相关数据即可。
为了保证生成的合同和模板格式一致,采用复制模板、修改模板数据的方式,使用shutil,生成50个合同。
3.2.复制代码,并粘贴到vscode里
在vscode里,新建一个jupyter文件:
① 复制ChatGPT里给出的代码,粘贴到vscode里
② 点击“运行”
③ 当下面出现绿勾时,说明代码运行成功。
3.3 检查结果
用时0.5秒,生成了50个Word合同。
四、小结
4.1 关键模块:shutil
用模板批量创建Word文件时,要想保持和模板的格式保持一致,关键要用到一个Python内置的模块:shutil。
如果指定ChatGPT用这个模块,生成的Word文档字体会很不好看。 虽然可以用VBA调整,但又多了一步,麻烦。
4.2 善用“Regenerate response”
如果产生的结果不满意,不要在自己身上找原因,多在ChatGPT上找原因。
一个最简单的方法是:让它重新生成答案(Regenerate response)。
因为以前不知道“shutil”, 导致ChatGPT生成的结果,总是让我不满意,耗费了差不多一个小时。
后来,偶尔按了一下重新生成答案,它才跳出了正确的答案。
4.3 用好ChatGPT,任重道远
ChatGPT只能在会用的人手里,才能发挥出它的强大。
在不会用的人手里,充其量也只是个聊天工具。
提示词是关键。 需要不断地使用,不断地优化及总结。
自己以后需要做的是:选择一个领域,把这领域的ChatGPT提示词玩明白;同时,注意搜集、整理、其它领域的人及提示词。 如有需要,直接用他人的提示词,不用自己从头再来。
源码:
import os
import shutil
import pandas as pd
from docx import Document
# 模板文件路径和Excel文件路径
template_path = r"C:\Users\seven2024\Desktop\text\软件服务合同.docx"
excel_path = r"C:\Users\seven2024\Desktop\text\公司名称.xlsx"
# 读取Excel文件中的公司名称
company_names = pd.read_excel(excel_path)["公司名称"]
# 循环生成50份合同
for company_name in company_names[:50]:
# 复制模板文件
new_contract_path = os.path.join(os.path.dirname(template_path), f"{company_name}2023服务合同.docx")
shutil.copyfile(template_path, new_contract_path)
# 修改模板数据
document = Document(new_contract_path)
for paragraph in document.paragraphs:
paragraph.text = paragraph.text.replace("AA", "智云软件服务有限公司").replace("BB", company_name)
# 保存修改后的合同
document.save(new_contract_path)
print("合同生成完毕!")
发表评论