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()

近期文章

发表评论