【python脚本】word批注批量提取器V2实用版

简介: 【python脚本】word批注批量提取器V2实用版

前言

在经历了VBA提取word批注:


【VBA脚本】提取word文档中所有批注的信息和待解决状态


和python后处理与图形化:


【python脚本】word批注状态批量提取器V1版本


两步处理之后,终于可以进行实用性的探索:word批注批量提取器V2实用版!


实用演示


批注提取器演示


关键技术



python调用VBA

这段代码是从网上找的,思路就是通过win32com.client库来打开word文档,执行宏指令,再关闭word。因此这段代码是有缺陷的,如果当前word已经打开了那么就会执行出错(下个版本一定修复这个问题)。如果打开没有问题,就会执行'exportWordComments_Click'宏。

def update_content(url): #打开word,执行宏命令
    ret = ""
    docApp = win32com.client.DispatchEx('Word.Application')
    try:
        doc = docApp.Documents.Open(url)
        #print("打开文档")
        doc.Application.Run('exportWordComments_Click')
        #print("执行宏完成")
        doc.Save()
        ret = url + " 处理成功"
    except Exception as e:
        print(e + ", 执行失败")
        ret = url + " 处理失败"
    docApp.Quit()
    return ret
pass



最开始我的写法是doc.Application.Run('.\vba.docm!exportWordComments_Click'),含义是调用脚本同目录下vba.docm这个里面的宏。之后我发现word之间的宏是共享的,所以是不需要指定文件的,所以这段代码就改成这样了。


python写excel

python写excel使用的是xlsxwriter库,以标题栏的写入为例:

    output = excel_name #"D:\MyWork\python\get_comments_v2\log\Date_20220602_173646.xlsx"
    workbook = xw.Workbook(output)
    worksheet1 = workbook.add_worksheet("sheet1")
    worksheet1.activate()
    title = ['文件名', 
             '批注内容', 
             '原文', 
             '是否解决', 
             '批注者', 
             '页', 
             '行', 
             '日期', 
             '文件路径']
    bold = workbook.add_format({
        'bold':  True,  # 字体加粗
        'border': 1,  # 单元格边框宽度
        'align': 'left',  # 水平对齐方式
        'valign': 'vcenter',  # 垂直对齐方式
        'fg_color': '#F4B084',  # 单元格背景颜色
        'text_wrap': True,  # 是否自动换行
    })
    worksheet1.write_row('A1', title, bold)

 

就搞定了:



打开excel

脚本内打开excel还是用win32com,在这里做了保护,如果检测到excel已经打开了就不再打开,如果没打开的话就把excel打开,用xl_app.Visible = 1来显式的显示界面:

    def open_xlsx():
        already_open = 0
        xl_app = win32com.client.DispatchEx("Excel.Application")
        xl_app.Visible = 1
        for wb in xl_app.Workbooks:
            if(wb.Name == excel_name): #wb.Name只返回文件的名字,不包含路径
                already_open = 1
                break
        if(already_open==0):#需要新打开文件
            my_wb = xl_app.Workbooks.Open(excel_name)
    pass


独立线程

在测试的过程我就发现了(其实早就知道),开始检查 按键按下后,由于执行检查的时间太长了,这个按键就卡在这抬不起来,exe也动不了。所以说需要把按键对应的操作做成独立线程,也就是 按键 -> 提起处理的线程 ->按键抬起(回到了主线程) -> 子线程自己跑着去。所以实际的操作是open_xlsx(),后面的操作是:

    def thread_open_xlsx():
        t2 = threading.Thread(target=open_xlsx,args=())
        t2.start()
    pass
    button2 = Button(f3, text='开始检查', command=thread_start_check)

 

然后按键就和操作解依赖了~


资源链接

链接:https://pan.baidu.com/s/1kC5yYDkXvAmX7deLpXltWA

提取码:ou0k

--来自百度网盘超级会员V5的分享


相关文章
|
2月前
|
XML 数据格式 Python
从手动编辑到代码生成:Python 助你高效创建 Word 文档
本文介绍如何用Python实现Word文档自动化生成,结合python-docx、openpyxl和matplotlib库,高效完成报告撰写、数据插入与图表生成,大幅提升办公效率,降低格式错误,实现数据驱动的文档管理。
479 2
|
4月前
|
JSON 算法 API
深度分析小红书城API接口,用Python脚本实现
小红书作为以UGC内容为核心的生活方式平台,其非官方API主要通过移动端抓包解析获得,涵盖内容推荐、搜索、笔记详情、用户信息和互动操作等功能。本文分析了其接口体系、认证机制及请求规范,并提供基于Python的调用框架,涉及签名生成、登录态管理与数据解析。需注意非官方接口存在稳定性与合规风险,使用时应遵守平台协议及法律法规。
|
4月前
|
JSON API 开发者
深度分析阿里妈妈API接口,用Python脚本实现
阿里妈妈是阿里巴巴旗下营销平台,提供淘宝联盟、直通车等服务,支持推广位管理、商品查询等API功能。本文详解其API调用方法,重点实现商品推广信息(佣金、优惠券)获取,并提供Python实现方案。
|
4月前
|
JSON API 数据安全/隐私保护
深度分析虾皮城API接口,用Python脚本实现
虾皮开放平台提供丰富的API接口,支持商品管理、订单处理及促销信息查询等功能。本文详解API认证机制与调用方法,基于Python实现商品价格及到手价获取方案,适用于电商数据分析与运营。
|
4月前
|
API 数据安全/隐私保护 开发者
深度分析苏宁API接口,用Python脚本实现
深度分析苏宁API接口,用Python脚本实现
|
4月前
|
前端开发 Shell API
深度分析58同城API接口,用Python脚本实现
58同城为国内知名分类信息平台,涵盖房产、招聘、二手车等多领域。本文基于网页抓包与解析,分享其非官方接口的Python实现方案,分析核心接口特性与反爬应对策略,适用于数据学习与信息聚合。注意:非官方接口存在风险,使用需遵守平台规则。
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
308 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
338 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
271 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
205 82

推荐镜像

更多