如何用Python提取Word中含Track Changes的内容并导入Excel表格?
提取Word修订内容(Track Changes)到Excel的实现方案
这个需求完全可行,下面给你两种实用的实现方法,分别适配不同环境:
方法一:Windows环境用win32com直接调用Word对象模型
这种方法能完整获取Word修订的所有信息,包括类型、内容、作者、时间,兼容性最好:
- 先安装依赖库:
pip install pywin32 openpyxl
- 实现代码:
import win32com.client as win32 from openpyxl import Workbook # 启动Word后台进程 word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = False doc = word.Documents.Open(r'C:\你的文档路径\test.docx') # 初始化Excel工作簿 wb = Workbook() ws = wb.active ws.append(['修订类型', '内容', '作者', '修订时间']) # 遍历所有修订项 for rev in doc.Revisions: # 识别修订类型:1是插入,2是删除 rev_type = '插入' if rev.Type == 1 else '删除' # 提取核心信息 content = rev.Range.Text.strip() author = rev.Author rev_time = rev.Date # 写入Excel ws.append([rev_type, content, author, rev_time]) # 收尾操作 wb.save(r'C:\输出路径\revisions.xlsx') doc.Close(SaveChanges=False) word.Quit()
方法二:跨平台用python-docx解析XML
如果需要在Mac/Linux环境运行,用python-docx直接解析Word的XML结构(因为原生库不直接支持修订读取):
- 安装依赖库:
pip install python-docx openpyxl
- 实现代码:
from docx import Document from openpyxl import Workbook doc = Document(r'C:\你的文档路径\test.docx') wb = Workbook() ws = wb.active ws.append(['修订类型', '内容', '作者', '修订时间']) # 遍历每个段落,提取修订标记 for para in doc.paragraphs: p_xml = para._p ns = p_xml.nsmap # 获取XML命名空间 # 提取插入的内容 for ins in p_xml.findall('.//w:ins', ns): author = ins.get('w:author') date = ins.get('w:date') content = ''.join([t.text for t in ins.findall('.//w:t', ns)]) ws.append(['插入', content.strip(), author, date]) # 提取删除的内容 for delete in p_xml.findall('.//w:del', ns): author = delete.get('w:author') date = delete.get('w:date') content = ''.join([t.text for t in delete.findall('.//w:t', ns)]) ws.append(['删除', content.strip(), author, date]) wb.save(r'C:\输出路径\revisions.xlsx')
额外提示
如果需要把修订内容和原文档的正文对应起来,可以在提取原文本时,检查段落内的修订节点,把插入/删除的内容用*标注后插入到对应位置,再写入Excel的同一行或相邻单元格。
内容的提问来源于stack exchange,提问作者ör Daníel Hólm
相关产品推荐
相关产品推荐

