惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AWS News Blog
AWS News Blog
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
博客园 - 聂微东
Security Archives - TechRepublic
Security Archives - TechRepublic
酷 壳 – CoolShell
酷 壳 – CoolShell
Cisco Talos Blog
Cisco Talos Blog
人人都是产品经理
人人都是产品经理
I
Intezer
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
The Register - Security
The Register - Security
F
Full Disclosure
Scott Helme
Scott Helme
Cyberwarzone
Cyberwarzone
U
Unit 42
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
T
Tor Project blog
A
Arctic Wolf
Y
Y Combinator Blog
I
InfoQ
M
MIT News - Artificial intelligence
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
Latest news
Latest news
量子位
N
News and Events Feed by Topic
T
The Blog of Author Tim Ferriss
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园_首页
S
Securelist
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
The Cloudflare Blog
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - E-iceblue

Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分 如何使用 Python 快速将 Excel 转换为 XML 文件 在 Python 中快速锁定 Excel 单元格与行列 使用 Python 在 Word 文档中添加或删除文本框 如何使 PDF 可编辑 - Python 教程详解 将 Excel 表格插入 Word 文档的三种实用方案(Python 自动化) Python 办公自动化:如何轻松调整 Word/PDF 页面大小为 Legal 尺寸 数字签名 vs 电子签名:区别与如何在文件中插入数字签名 Python 教程:快速复制 Excel 工作表 如何对比 Excel 两列数据的不同:从基础操作到 Python 自动化 如何提取 Word 文档中的表格并导出为 Excel(Python 教程) 使用 Python 在 PowerPoint 中添加或移除背景图和背景颜色 在 Java 中使用 Spire.PDF 合并 PDF 文档(含加密与压缩处理) 在 Python 中自动化转化 Markdown 为 HTML 【详细教程】 Python 控制 PDF 页面大小、页边距、页面方向与缩放 Python 办公自动化:快速将 HTML 转换为 PDF 格式 在 Python 中给 PDF 设置背景图或背景色 在 Python 中转换 XML 为 PDF 文档:基础转换与转换设置 在 Python 中对比 Word 文档:自动生成修订报告【教程向】 Excel 删除空白行的 5 种方法 【手动与 Python 自动化】 删除 Excel 表格中的重复行 【4 种实用方法】 从纯文本到精美文档:TXT 转 PDF 的三种高效方案 Python 实现 PDF 表单域的自动化创建与智能填充 PPT 批量转图片:在 Web 预览中实现翻页效果(C#/VB.NET) 为什么生成的条形码扫不出来?从静区、分辨率和色彩三个方向解析条码识别率 Excel vs CSV:在系统数据处理中该如何选择?(附格式转换代码示例) 【2026 最新教程】Java 自动化提取 PDF 表格:从文本到 Excel/CSV 的全场景实现 零成本实现文档智能:本地化 OCR 提取与 AI 处理全流程实战 PPT 智能提取与分析实战:把演示文档变成结构化数据 为什么 PDF 文本能看到,却提取不到?从开发者角度解析与解决方案 PDF 文件为什么打不开?常见原因与解决思路 PDF vs PDF/A:区别、场景与常用转换方法(2026 全面解读) 使用 Java 将 PowerPoint 转换为 PDF 的完整指南 如何在 Python 中轻松添加、隐藏和删除幻灯片
Python 办公自动化:Word 文档加密与权限控制实战
E-iceblue · 2026-07-10 · via 博客园 - E-iceblue

在自动化处理 Word 文档时,保护文档的安全性和完整性是常见需求。如果文档包含敏感的商业机密、财务报表或核心技术资料,限制未经授权的查看和修改就显得尤为重要。本文将介绍如何使用 Spire.Doc for Python 库,通过简洁直观的代码实现权限控制,包括完全加密、解密、设置全局编辑限制以及控制部分内容开放编辑的实用技巧。

了解文档加密与权限控制

在编写代码前,我们需要理解 Word 文档保护的两种核心机制:打开加密编辑限制

  • 打开加密: 这是针对整个文件的限制。它通过 Encrypt 方法直接加密文档,未授权用户在双击打开文件时,会被提示要求输入密码,只有验证通过才能查看内容。这适合合同底稿、财务报表等需要严格保密的文件。
  • 编辑限制: 这是针对操作行为的限制。它允许任何人直接打开并阅读文档,但通过 Protect 方法限制了修改权限(如只读、仅允许修订或批注等)。

环境准备与库安装

Spire.Doc for Python 无需依赖本地的 Microsoft Word 软件就能完成 Word 文件的处理,包括创建、编辑、转换格式和安全保护等一系列操作。要安装它,我们可以通过 Python 的包管理器直接获取所需的依赖。打开终端或命令行工具,执行以下命令进行安装:

pip install Spire.Doc

该组件还提供免费版,适合用于测试和小型项目

使用 Python 直接加密整个 Word 文档

在发布或分享薪酬表、财务季报或商业机密等包含敏感数据的文件时,最直接有效的办法就是限制查看权限。我们只需加载目标 Word 文件,直接调用 Document.Encrypt() 方法并设置密码。完成后,未授权用户在双击打开文件时,Word 就会自动弹出密码输入框,验证失败则无法看到任何内容。

from spire.doc import *
from spire.doc.common import *

# 创建一个 Document 对象
document = Document()

# 从文件中加载示例文档
document.LoadFromFile("/input/示例文档.docx")

# 使用密码 "PassWord" 对文档进行加密
document.Encrypt("PassWord")

# 将加密后的文档保存为新的 Word 文档
document.SaveToFile("/加密word文档.docx", FileFormat.Docx)
document.Dispose()
document.Close()

加密 Word 文档

解除 Word 文档的密码保护

当文档内容不再属于保密信息,可以公开时,我们可以为其解除密码保护,通过在 LoadFromFile 加载文档时传入正确密码解密读取,随后调用 RemoveEncryption 方法清除文件的密码标记,就能将受密码保护的 Word 文档变为一个普通的、可自由打开的文件。

from spire.doc import *
from spire.doc.common import *

# 创建一个 Document 对象
document = Document()

# 从文件中加载加密文档,并传入正确密码
document.LoadFromFile("/output/加密word文档.docx", FileFormat.Docx, "PassWord")

# 移除文档的加密
document.RemoveEncryption()

# 将解密后的文档保存为新的 Word 文档
document.SaveToFile("/output/解密Word文档.docx", FileFormat.Docx)
document.Dispose()
document.Close()

使用 Python 设置 Word 文档编辑权限

在下发红头文件、规章制度或员工手册等通知时,通常需要允许所有人阅读,但禁止任何人改动文字以维护官方文本的完整性和严肃性。我们调用 doc.Protect() 方法即可锁定整个文档,Spire.Doc 支持将编辑限制类型设置为只读(AllowOnlyReading)、仅限修订(AllowOnlyRevisions)、仅限批注(AllowOnlyComments)或仅限填写表单域(AllowOnlyFormFields),并同时设置一个解除限制的密码。

from spire.doc import *
from spire.doc.common import *

# 创建一个 Document 类对象
doc = Document()

# 加载一个 Word 文档
doc.LoadFromFile("示例文档.docx")

# 将编辑限制类型设置为只读(无更改)并设置密码
doc.Protect(ProtectionType.AllowOnlyReading, "password")

# 可选:将编辑限制类型设置为修订
# doc.Protect(ProtectionType.AllowOnlyRevisions, "password")

# 可选:将编辑限制类型设置为批注
# doc.Protect(ProtectionType.AllowOnlyComments, "password")

# 可选:将编辑限制类型设置为填写窗体
# doc.Protect(ProtectionType.AllowOnlyFormFields, "password")

# 保存文档
doc.SaveToFile("output/编辑限制.docx")
doc.Close()

限制 Word 文档的编辑权限

通过 Python 给局部内容添加权限

在合同会签、多方协作或跨部门填写固定模板时,通常需要把整个文档设为只读,但特意留出某个段落允许特定人员修改,例如法务限制核心条款但允许业务员修改信息填写区。在 Spire.Doc 的帮助下,我们先获取目标章节的指定段落,在其开头和结尾分别插入 PermissionStartPermissionEnd 标记,随后必须调用 doc.Protect 开启全局只读限制,此时在 Word 中打开该文档,除标记区域可编辑外,其余主体内容均被锁定。

from spire.doc import *
from spire.doc.common import *

# 创建一个 Document 类对象
doc = Document()

# 加载一个 Word 文档
doc.LoadFromFile("示例文档.docx")

# 获取第一节
section = doc.Sections.get_Item(0)

# 创建权限起始标记和结束标记,设置唯一的区域 ID "exception1"
start = PermissionStart(doc, "exception1")
end = PermissionEnd(doc, "exception1")

# 将权限起始标记和结束标记插入到第一节的第二段中(索引为 1)
paragraph = section.Paragraphs.get_Item(1)
paragraph.ChildObjects.Insert(0, start)
paragraph.ChildObjects.Add(end)

# 必须开启全局只读编辑限制,局部可编辑区域才会生效
doc.Protect(ProtectionType.AllowOnlyReading, "password")

# 保存文档
doc.SaveToFile("output/可编辑区域.docx")
doc.Close()

对 Word 文档的部分内容设置编辑权限

方案对比:如何选择适合的密保方式

为了方便大家在实际应用时快速找到适合的 Word 文档保护方式,下表整理了四种方案的适用场景与最终效果:

业务场景 保护方案 核心技术方法 最终效果
高敏感财务/商业文件外发 文档完全加密 doc.Encrypt() 打开时必须输密码,否则无法看到内容。
文件批量归档与全文检索 文档解密移除 doc.RemoveEncryption() 清除密码标记,恢复为普通文档。
公文传阅、红头文件制度发布 全局只读限制 doc.Protect() 所有人可读,但无法修改和改动任何文字。
合同会签、固定模板信息收集 局部权限控制 PermissionStart + doc.Protect() 整体锁定防止误改,仅留出指定段落供用户编辑。

总结

利用 Spire.Doc for Python,我们可以根据不同的业务场景,通过几行代码灵活实现从全局完全加密到局部开放编辑的细粒度安全控制。这套方案非常适合集成到企业自动化办公流程中,用来批量处理、分发及配置受保护的电子公文与商务合同。