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


相关文章
|
5天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
24 2
|
7天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
19 3
|
12天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
17 3
|
12天前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
15 2
|
13天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
4天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
6天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
5天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。