10.如何用ChatGPT批量设置Word样式
这是零基础玩ChatGPT+Python——办公自动化的第10节:利用ChatGPT生成Python代码,批量设置Word样式。
教程目的: 初步掌握用ChatGPT批量操作Word文档的样式,节省时间
阅读对象: 需要用ChatGPT提高工作效率、摆脱重复无聊工作、无Python基础、或Python入门者。
文章目录
场景:
需要设置一下50份合同里的样式。 要求一:把合同里的空行去掉;要求二:把甲方、乙方标黑。
使用ChatGPT前: 一个个设置Word合同中的相关样式。至少需要10分钟。
使用ChatGPT后: 写好提示词,让ChatGPT生成Python代码,批量修改Word样式,不到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/
练习素材内容:
包含有50个Word合同:每个合同里有很多空行,甲方、乙方不是黑体。
下载后,解压,获得文件夹的位置。例如:
50个Word文档所在的文件夹:C:\Users\seven2024\Desktop\text\
三、操作步骤
安装模块
首先需要在vscode里,安装1个模块。 在vscode的终端里,输入这1个命令,后按回车:
pip install pywin32
3.1.打开ChatGPT,输入提示词
作为一个Python程序员,需要使用pywin32,将文件夹里的所有Word文档样式调整。
要求:去除空行;将Word文档里的:“甲方(客户方)” "乙方(服务方)",变成黑体
文件夹地址:C:\Users\seven2024\Desktop\text
这里用的是plus
3.2.复制代码,并粘贴到vscode里
在vscode里,新建一个jupyter文件:
① 复制ChatGPT里给出的代码,粘贴到vscode里
② 点击“运行”
③ 当下面出现绿勾时,说明代码运行成功。
3.3 检查结果
用时27秒,修改完了50个Word文档的样式。
四、小结
4.1 pywin32
这里面的一个关键是:需要用到一个功能:pywin32, 它可以让Python使用微软的VBA。
4.2 出现错误怎么办?
调低对ChatGPT的预期:出现报错是很正常的。
出现报错的参考流程:
出现报错后,先把报错发给ChatGPT,让它解决。
如果发了二三次,问题都没有解决的话,很可能是方向错了。 重新优化提示词,重新生成答案。 再次尝试。
并不是所有的问题,都有答案。有些不重要的问题,记录下来,以后再解决。
非常重要的问题,找人、发帖求助,用替代的方案。黑帽、白帽,抓住老鼠就是好猫。
4.3 参考代码:
import os
import win32com.client as win32
# 初始化 Word 应用
word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False # 设置 Word 的可见性。如果你想看到 Word 打开并进行操作,可以将其设置为 True
# 文件夹路径
folder_path = r'C:\Users\seven2024\Desktop\text'
# 遍历文件夹中的所有 Word 文档
for file in os.listdir(folder_path):
if file.endswith('.doc') or file.endswith('.docx'):
file_path = os.path.join(folder_path, file)
# 打开 Word 文档
doc = word.Documents.Open(file_path)
# 需要处理的字符串
targets = ['甲方(客户方)', '乙方(服务方)']
# 遍历文档中的所有段落
for para in doc.Paragraphs:
# 将特定文本设置为黑体
for target in targets:
if target in para.Range.Text:
start = para.Range.Text.index(target)
end = start + len(target)
# 创建一个新的 Range 对象,该对象表示包含指定文本的部分
text_range = para.Range.Duplicate
text_range.Start = para.Range.Start + start
text_range.End = para.Range.Start + end
# 将文本设置为黑体
text_range.Font.Bold = True
# 删除空行
if para.Range.Text.strip() == '':
para.Range.Delete()
# 保存并关闭文档
doc.Close(SaveChanges=True)
# 退出 Word
word.Quit()
发表评论