Python 处理 Word 文档中的批注(添加、删除) - E

news/2025/10/11 16:05:24/文章来源:https://www.cnblogs.com/Yesi/p/19135278

在多人协作编辑 Word 文档时,批注可以帮助沟通修改意见、追踪讨论内容。无论是团队审阅报告,还是批改论文,批注都能让交流更直观。而如果你需要批量添加或删除批注,手动操作不仅耗时,还容易出错。本文将带你学习如何用 Python 自动化处理 Word 批注,让文档审阅更高效、更智能。

本文将使用 Spire.Doc 来演示怎样在 Python 中添加和删除批注。你可以导航到 E-iceblue 官网下载这个专业的 Word 库。

Python 在 Word 文档中快速添加批注

在具体操作之前,我们先来看最常见的应用场景——为 Word 文档添加批注。批注可以帮助我们精准标出需要修改或关注的内容,方便团队成员快速理解反馈。根据使用场景的不同,添加批注通常分为针对段落和针对特定文本两种情况。

Python 给段落添加批注

借助 Spire.Doc,你可以通过调用 Paragraph.AppendComment() 方法为段落添加批注。下面是完整的示例代码,稍后我们将对其进行详细解析。

代码示例——对 Word 文档中第十六段添加批注:

from spire.doc import *
from spire.doc.common import *# 创建一个 Document 类对象并加载一个 Word 文档
doc = Document()
doc.LoadFromFile("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.docx")# 获取第一节
section = doc.Sections.get_Item(0)# 获取第 16 段
paragraph = section.Paragraphs.get_Item(15)# 向段落添加注释
comment = Comment(doc)
comment.Body.AddParagraph().Text = "可以列举一些案例"# 设置注释的作者
comment.Format.Author = "陈莉"paragraph.ChildObjects.Add(comment)# 创建注释开始标记和结束标记,并将它们设置为创建的注释的开始和结束标记
commentStart = CommentMark(doc, CommentMarkType.CommentStart)
commentEnd = CommentMark(doc, CommentMarkType.CommentEnd)
commentStart.CommentId = comment.Format.CommentId
commentEnd.CommentId = comment.Format.CommentId# 在段落的开头和结尾分别插入注释开始标记和结束标记
paragraph.ChildObjects.Insert(0, commentStart)
paragraph.ChildObjects.Add(commentEnd)# 保存文档
doc.SaveToFile("E:/Administrator/Python1/output/批注段落.docx")
doc.Close()

下方为上面的代码添加的批注预览图:
Python 在 Word 文档中给段落添加批注

代码解析:

  • 加载需要批注的 Word 文档。
  • 通过索引先获取节,再获取想要批注的段落。需要注意的是,这里的段落是通过索引来获取的,所以一定要确定想要添加批注的段落到底是第几段。
  • 通过 Paragraph.AppendComment() 方法为该段落添加批注。
  • 使用 Comment.Format.Author 属性设置批注的作者。
  • 创建评论开始标记和结束标记,并通过 CommentMark.CommentId 属性将它们设置为所创建评论的开始和结束标记。
  • 通过 Paragraph.ChildObjects.Insert() 方法将批注开始标记和结束标记分别插入段首和段尾。

Python 给指定文本添加批注

给文本添加批注是另一个常见需求,尤其适用于需要对专业术语、关键概念或表格数据进行说明或补充注释的场景。与为段落添加批注不同,你需要先查找目标文本,将其获取为文本范围,然后再为该范围添加批注。

代码示例——在 Word 文档中给特定的文本添加批注:

from spire.doc import *
from spire.doc.common import *# 创建一个 Document 类的对象并加载一个 Word 文档
doc = Document()
doc.LoadFromFile("E:/Administrator/Python1/output/批注段落.docx")# 查找要添加评论的文本
text = doc.FindString("AI绘画逐渐", True, True)# 创建一个评论对象并设置评论的内容和作者
comment = Comment(doc)
comment.Body.AddParagraph().Text = "可以解释一下什么是AI绘画"
comment.Format.Author = "张萍"# 将找到的文本作为文本范围,并获取其所属的段落
range = text.GetAsOneRange()
paragraph = range.OwnerParagraph# 将评论添加到段落中
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(range) + 1, comment)# 创建评论起始标记和结束标记,并将它们设置为创建的评论的起始标记和结束标记
commentStart = CommentMark(doc, CommentMarkType.CommentStart)
commentEnd = CommentMark(doc, CommentMarkType.CommentEnd)
commentStart.CommentId = comment.Format.CommentId
commentEnd.CommentId = comment.Format.CommentId# 在找到的文本之前和之后插入创建的评论起始和结束标记
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(range), commentStart)
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(range) + 1, commentEnd)# 保存文档
doc.SaveToFile("E:/Administrator/Python1/output/批注文本.docx")
doc.Close()

下面是上方代码创建的批注预览:
Python 在 Word 文档中给文本添加批注

代码解析:

  • 加载需要批注的 Word 文档。
  • 通过 Documemt.FindString() 方法查找指定文本。
  • 创建批注类对象,通过 Comment.Body.AddParagraph().Text 属性设置批注内容,并通过 Comment.Format.Author 属性设置批注作者。
  • 使用 TextSelection.GetAsOneRange() 方法将文本作为一个文本范围获取,并通过 TextRange.OwnerParagraph 属性获取文本所属的段落。
  • 通过 Paragraph.ChildObjects.Insert() 方法在找到的文本后插入批注。
  • 创建评论开始标记和结束标记,将它们设置为所创建评论的开始和结束标记。然后将批注开始标记和结束标记分别插入段首和段尾。

Python 删除 Word 文档中的批注

在文档审阅完成、准备生成最终稿时,删除 Word 中的批注是必不可少的操作。这样不仅能让文章更清晰整洁,还能提升整体的专业感。借助 Spire.Doc,无论是删除单条批注,还是批量清除所有批注,都可以轻松实现。

代码示例——删除第二个批注:

from spire.doc import *
from spire.doc.common import *# 创建一个 Document 类对象并加载一个 Word 文档
doc = Document()
doc.LoadFromFile("E:/Administrator/Python1/output/批注文本.docx")# 移除第二个注释
doc.Comments.RemoveAt(1)# 移除所有注释
#doc.Comments.Clear()# 保存文档
doc.SaveToFile("E:/Administrator/Python1/output/删除批注.docx")
doc.Close()

代码解析:

  • 导入含有批注的 Word 文档。
  • 通过 Document.Clear() 方法移除所有批注,或使用 Document.RemoveAt() 方法删除指定的批注。

总结

本文介绍了如何通过 Python 在 Word 文档中添加、回复和删除批注。无论是处理单个批注,还是批量操作,借助 Spire.Doc 都能轻松实现,不仅节省手动操作的时间,还能让文档审阅流程更加高效、有条理。掌握这些方法后,你可以更快速地管理文档批注,提升协作效率,并生成整洁专业的最终稿件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nexpose 8.23.0 for Linux Windows - 漏洞扫描

Nexpose 8.23.0 for Linux & Windows - 漏洞扫描Nexpose 8.23.0 for Linux & Windows - 漏洞扫描 Rapid7 on-prem Vulnerability Management, released Oct 6, 2025 请访问原文链接:https://sysin.org/blog/n…

2025 年房屋鉴定公司最新推荐权威榜单:涵盖安全评估 / 承载力 / 工程质量 / 危房 / 受损伤等领域,助您精准挑选靠谱机构

当前房地产行业持续发展,房屋安全成为民众关注焦点,房屋鉴定作为守护房屋安全的核心环节,行业地位愈发关键。但市场上房屋鉴定公司良莠不齐,部分机构资质缺失、技术团队薄弱、仪器设备落后,导致鉴定结果可信度低,…

当游戏NPC有了“灵魂”,网易伏羲解码游戏智能交互场景新实践

全球AI产业正经历深刻的技术范式转变,行业不仅关注基于通用模型的应用搭建,也愈发关注如何构建真正符合产业需求的模型能力体系,其中,“后训练”技术(Post-Training)至关重要。2025云栖大会《大模型后训练:打造…

2025最新微信公众号文章数据批量导出excel工具1.0版

之前的老粉应该都知道我已经开发过一款:微信公众号文章批量下载的软件了,可以将文章导出成word文档、pdf、markdown、html等格式, 而今天这款软件主要是批量导出文章数据为excel表格用的,用法上和之前的软件差不多…

磊科N60Pro刷机

磊科N60Pro刷机命令网线,一头连接千兆网口,一头电脑ssh 192.168.0.1useradmin密码:就是你设置的登录密码# 备份 BL2 引导分区(mtd1)dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin备份 u-boot-env 环境变量(mtd2)dd if=…

Mac端查词翻译工作流:基于欧路词典与Raycast

目录Mac端欧路词典配置Raycast整合欧路词典效果演示快速查词翻译OCR下载Easy Dictionary插件软件配置 Mac端欧路词典配置 默认读者已经有一定的词典配置经验,下面直接列出一些好用的资源: 词典pj:Mac端突破注册限制…

m3u8格式在直播场景中的应用

M3U8作为一种基于文本的播放列表格式,其核心作用在于将多个视频或音频片段组织成一个连续的播放序列,广泛应用于流媒体传输,尤其在实时直播领域扮演着关键角色。以下是M3U8在直播中的主要应用方式: 实现实时流媒体…

C# ProgressBar 进度条控件

原文链接:https://blog.csdn.net/qq_29406323/article/details/86291763 1 继承关系 Object→MarshalByRefObject→Component→Control→ProgressBarProgressBar表示Windows进度栏控件。 2 重要属性3 示例 3.1 制作简…

随手写的一个子进程

主进程 import ClearTouchGroundCacheCode from ../utils/workers/clearTouchGroundCache.worker.js; const blob = new Blob([ClearTouchGroundCacheCode], { type: application/javascript });this.clearTouchGrou…

来追梦-D1295 小F过河

前言 依旧是固定的前言。 拿下了第四名,和第三名同分结果提交次数多了。 发现第三名是我的同学并且比我弱之后大胆猜测他使用的奇怪的方法。 结果看了他T3的代码,的确如此,他居然转移的时候只转移前面和后面的 \(50…

P3605解题报告

前言 毕竟是解题报告,自然只是个报告了 最近再刷树状数组的题,但是线段树很多时候也能维护这个东西 当然,有些题目还可以使用主席树解决,看个人习惯了 题目意思 给出一颗带点权树,对于每一个节点求出他的子孙节点…

P13763 解题报告

前言 非常好的树上问题,使我的大脑旋转 不难,思维难度也不高,但是如果没有想到真的很难说 广告 同步发布于洛谷专栏,不确定有更好的阅读体验 题意 给出一颗树,不带边权点权,每次询问给出 \(s,t\) 问连接 \(s,t\)…

CF1082E 解题报告

题目意思 至多进行一次操作,一个操作定义为将 \(i\in{[l,r]}\) 的 \(a_i = a_i + b\) 这个 \(b\) 自定,无限制,询问至多一次操作之后,至多有多少个 \(i\in{[1,n]}\) 满足 \(a_i=c\) 其中 \(c\) 为给定的一个数。 思…

国标GB28181算法算力平台EasyGBS具备哪些核心流媒体技术?

国标GB28181算法算力平台EasyGBS具备哪些核心流媒体技术?在当今快速发展的智能监控时代,国标GB28181视频平台EasyGBS,作为一款基于国标GB28181、RTSP、onvif等协议接入的AI算法算力平台,凭借其强大的视频接入、处理…

2025 年净化车间源头厂家最新推荐排行榜:精选实力企业,助力企业精准选择优质净化车间服务商无尘/gmp/新能源/锂电池净化车间厂家推荐

当前净化行业蓬勃发展,企业对净化车间的需求愈发旺盛,涵盖电子、医药、食品、科研等多个关键领域。然而,市场上净化车间源头厂家数量繁杂,部分厂家存在施工不规范、技术实力薄弱、售后服务缺失等问题,导致工程质量…

如何复制获取无法复制的页面内容

如何复制获取无法复制的页面内容有的隐私页面条款不让复制,如何解决呢? 🧰 步骤:使用开发者工具复制网页内容 ✅ 适用场景:页面禁止右键复制 页面内容是动态加载的(如 Keep 的隐私政策页面)操作步骤 1. 打开网…

C语言的“动态数组”

C语言的“动态数组”掩码结构体宏的实现本质上就是使用一个掩码数组 chMask 把结构体保护起来。见《大佬的PLOOC使用示例及其基于C语言的面向对象编程-傻孩子.pdf》1 /* 公众号:嵌入式大杂烩 */2 #ifndef __DYNAMIC_A…

详细介绍:Spring Boot 应用示例

详细介绍:Spring Boot 应用示例pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

(Sigcomm25) Stellar: 阿里新一代云AI RDMA网络

创新点主要有: 1. PVDMA:带参数的虚拟化直接地址访问,降低系统启动时间。 2. eMTT:扩展内存翻译表,从而更大化地利用GDR性能。 3. Packet Spray:有效地利用RDMA多路,提升RDMA通信性能。(严格上不是创新而是实验…