【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的分享


相关文章
|
4天前
|
网络协议 Linux Python
Python脚本配置Centos静态ip地址
这是一个Python脚本,用于自动化配置CentOS系统的静态IP地址。脚本创建或修改文件,填写接口名(如ens33)、IP地址、子网掩码、网关和DNS。运行时需替换变量值并使用`sudo`以管理员权限执行。完成配置后,它会重启网络服务。注意,用户应根据实际网络环境调整参数。
Python脚本配置Centos静态ip地址
|
1天前
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
19 8
|
1天前
|
网络协议 安全 Shell
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
23 7
|
5天前
|
数据采集 存储 监控
python 10个自动化脚本
【7月更文挑战第10天】
16 3
|
1天前
|
算法 Python
我们需要一个简单的Python脚本来作为示例。假设我们有一个名为`hello_world.py`的脚本,
我们需要一个简单的Python脚本来作为示例。假设我们有一个名为`hello_world.py`的脚本,
7 0
|
6天前
|
安全 Python
告别低效编程!Python线程与进程并发技术详解,让你的代码飞起来!
【7月更文挑战第9天】Python并发编程提升效率:**理解并发与并行,线程借助`threading`模块处理IO密集型任务,受限于GIL;进程用`multiprocessing`实现并行,绕过GIL限制。示例展示线程和进程创建及同步。选择合适模型,注意线程安全,利用多核,优化性能,实现高效并发编程。
20 3
|
8天前
|
开发者 Python
Python元类实战:打造你的专属编程魔法,让代码随心所欲变化
【7月更文挑战第7天】Python的元类是编程的变形师,用于创建类的“类”,赋予代码在构建时的变形能力。
30 1
|
9天前
|
设计模式 存储 Python
Python元类大揭秘:从理解到应用,一步步构建你的编程帝国
【7月更文挑战第6天】Python元类是创建类的对象的基石,允许控制类的生成过程。通过自定义元类,可在类定义时动态添加方法或改变行为。
16 0
|
6天前
|
数据采集 大数据 数据安全/隐私保护
Python编程:如何有效等待套接字的读取与关闭
Python网络编程中,套接字事件处理至关重要。利用`selectors`模块和代理IP能增强程序的稳定性和可靠性。代码示例展示了如何通过代理连接目标服务器,注册套接字的读写事件并高效处理。在代理IP配置、连接创建、事件循环及回调函数中,实现了数据收发与连接管理,有效应对网络爬虫或聊天应用的需求,同时保护了真实IP。
Python编程:如何有效等待套接字的读取与关闭
|
1天前
|
数据挖掘 开发者 Python
如何自学Python编程?
【7月更文挑战第14天】如何自学Python编程?
16 4