使用Python添加、读取和删除Word文档属性

news2025/2/21 21:46:15

在Python中处理Word文档时,对文档属性进行操作是一项重要的任务。文档属性主要分为内置属性(如标题、作者等)和自定义属性(用户根据自身需求定义的属性)。合理地管理这些属性,能够提升文档管理效率、优化信息检索功能,并确保文档数据的准确性与安全性。本文将介绍如何使用Python实现对Word文档属性的添加、读取和删除操作,包括内置文档属性和自定义文档属性。

文章目录

    • 用Python添加文档属性到Word文档
    • 用Python读取Word文档的文档属性
    • 用Python移除Word文档的文档属性

本文所使用的方法需要用到免费的Free Spire.Doc for Python,PyPI:pip install spire.doc.free

用Python添加文档属性到Word文档

我们可以使用库中的类和方法直接从文件或流载入Word文档进行处理。添加内置属性时,利用Document.BuiltinDocumentProperties属性访问并设置相应值;添加自定义属性则借助CustomDocumentProperties.Add()方法。具体步骤如下:

  1. 导入所需模块:DocumentStringInt32DateTimeBoolean
  2. 创建`Document 类的实例。
  3. 使用Document.LoadFromFile()方法加载Word文档。
  4. 对内置属性,通过Document.BuiltinDocumentProperties属性获取并设置相关属性值。
  5. 对自定义属性,通过Document.CustomDocumentProperties属性获取,再使用Add()方法添加不同类型的自定义属性。
  6. 使用Document.SaveToFile()方法保存修改后的文档。

代码示例

from spire.doc import Document, String, Int32, DateTime, Boolean

# 创建Document对象
doc = Document()
# 加载Word文档
doc.LoadFromFile("Sample.docx")

# 添加内置属性
builtin_prop = doc.BuiltinDocumentProperties
builtin_prop.Title = "Python文档属性操作"
builtin_prop.Author = "代码开发者"
builtin_prop.Category = "技术教程"
builtin_prop.Keywords = "Python,Word,属性操作"

# 添加自定义属性
custom_prop = doc.CustomDocumentProperties
custom_prop.Add("项目ID", String("PRJ001"))
custom_prop.Add("完成进度", Int32(80))
custom_prop.Add("截止日期", DateTime(2024, 12, 31, 0, 0, 0, 0))
custom_prop.Add("是否重要", Boolean(True))

# 保存文档
doc.SaveToFile("output/添加属性后的文档.docx")
doc.Close()

结果
Python添加属性信息到Word文档

用Python读取Word文档的文档属性

通过BuiltinDocumentProperties类的属性,我们也可以实现读取内置属性,而读取自定义属性则依赖CustomDocumentProperty.NameCustomDocumentProperty.Value属性(或CustomDocumentProperty.ToString()方法读取为字符串)。具体操作步骤如下:

  1. 导入所需模块:Document
  2. 创建Document类的实例。
  3. 使用Document.LoadFromFile()方法加载已添加属性的Word文档。
  4. 对于内置属性,通过Document.BuiltinDocumentProperties属性获取并读取相关属性值。
  5. 对于自定义属性,通过Document.CustomDocumentProperties属性获取,然后遍历获取每个自定义属性的名称和值。
  6. 输出或进一步处理读取到的属性值。

代码示例

from spire.doc import Document

# 创建Document对象
doc = Document()
# 加载Word文档
doc.LoadFromFile("output/添加属性后的文档.docx")

# 读取内置属性
builtin_prop = doc.BuiltinDocumentProperties
print("内置属性:")
print(f"标题: {builtin_prop.Title}")
print(f"作者: {builtin_prop.Author}")
print(f"类别: {builtin_prop.Category}")
print(f"关键词: {builtin_prop.Keywords}")

# 读取自定义属性
custom_prop = doc.CustomDocumentProperties
print("\n自定义属性:")
for i in range(custom_prop.Count):
    prop_name = custom_prop.get_Item(i).Name
    prop_value = custom_prop.get_Item(i).ToString()
    print(f"{prop_name}: {prop_value}")

doc.Close()

结果
Python读取Word文档属性

用Python移除Word文档的文档属性

删除内置属性时,将其值设为None即可;删除自定义属性则使用DocumentProperties.Remove()方法。具体操作步骤如下:

  1. 导入所需模块:Document
  2. 创建Document类的实例。
  3. 使用Document.LoadFromFile()方法加载需要删除属性的Word文档。
  4. 对于内置属性,通过Document.BuiltinDocumentProperties属性获取并将需要删除的属性值设为None
  5. 对于自定义属性,通过Document.CustomDocumentProperties属性获取,然后遍历并使用Remove()方法删除每个自定义属性。
  6. 使用Document.SaveToFile()方法保存修改后的文档。

代码示例

from spire.doc import Document

# 创建Document对象
doc = Document()
# 加载Word文档
doc.LoadFromFile("output/添加属性后的文档.docx")

# 删除内置属性
builtin_prop = doc.BuiltinDocumentProperties
builtin_prop.Title = None
builtin_prop.Author = None
builtin_prop.Category = None
builtin_prop.Keywords = None

# 删除自定义属性
custom_prop = doc.CustomDocumentProperties
for i in range(custom_prop.Count - 1, -1, -1):
    custom_prop.Remove(custom_prop[i].Name)

# 保存文档
doc.SaveToFile("output/删除属性后的文档.docx")
doc.Close()

本文演示了如何使用Python添加、读取和删除Word文档中的内置文档属性和自定义文档属性。

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

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

相关文章

Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器

目录 登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1 介绍2.3.2 生成和校…

VSCode运行Go程序报错:Unable to process `evaluate`: debuggee is running

如果使用默认的VSCode的服务器来运行Go程序,那么使用fmt.Scan函数输入数据的时候就会报错,我们需要修改launch.json文件,将Go程序运行在shell终端上。 main.go package mainimport "fmt"func main() {var n intfmt.Scan(&n)v…

IntersectionObserver用法

IntersectionObserver用法 1.什么是IntersectionObserver?2.使用2.1 创建观察对象2.2 观察指定DOM对象2.3 参数详解(1)callback参数(2)options 配置参数 3.应用3.1 Dom进入页面的加载动画3.2 图片的懒加载 1.什么是IntersectionObserver? IntersectionO…

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性...

全文链接:https://tecdat.cn/?p40365 在环境流行病学研究中,理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论,并引入了疾病映射以及对空间风险进行平滑处理…

DeepSeek - R1:模型架构深度解析

DeepSeek - R1:模型架构深度解析 引言 本文将深入探索DeepSeek - R1模型架构。将从输入到输出追踪DeepSeek - R1模型,找出架构中的新发展和关键部分。DeepSeek - R1基于DeepSeek - V3 - Base模型架构,本文旨在涵盖其设计的所有重要方面。 …

火绒终端安全管理系统V2.0【系统防御功能】

火绒企业版V2.0系统防御功能包含系统加固、应用加固、软件安装拦截、摄像头保护和浏览器保护。火绒终端安全管理软件V2.0守护企业用户终端安全。 系统防御 1. 系统加固 系统加固功能根据火绒提供的安全加固策略,当程序对特定系统资源操作时提醒用户可能存在的安…

Word中接入大模型教程

前言 为什么要在word中接入大模型呢? 个人觉得最大的意义就是不用来回切换与复制粘贴了吧。 今天分享一下昨天实践的在word中接入大模型的教程。 在word中接入大模型最简单的方式就是使用vba。 vba代码要做的事,拆分一下就是: 获取用户…

【git-hub项目:YOLOs-CPP】本地实现04:项目简化

项目跑通之后,我们常常还需要对我们没有用到的任何内容进行删除,以简化项目体积,也便于我们阅读和后续部署。如何实现呢?本篇博客教会大家实现! 项目一键下载【⬇️⬇️⬇️】: 精简后:【GitHub跑通项目:YOLOs-CPP】+【计算机视觉】+【YOLOv11模型】+【windows+Cpp+ONN…

CTF 代码学习日记 PHP

基础 2字符串连接可以使用点号(.) 3.$_:在 PHP 中,以$_开头的变量(如$_GET、$_POST、$_COOKIE等)是超级全局变量。超级全局变量的特点是它们在 PHP 脚本的任何地方(包括函数内部、类内部等&am…

观察者模式说明(C语言版本)

观察者模式主要是为了实现一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例,有需要的可以参考…

【从0做项目】Java搜索引擎(6) 正则表达式鲨疯了优化正文解析

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 文章导读 零:项目结果展示 一:导读&知识点回顾 二:遗留问题 …

【论文技巧】Mermaid VSCode插件制作流程图保存方法

插流程图快点 利用Mermaid Preview插件自带功能 如果你的VSCode安装了支持导出图片的Mermaid预览插件(如 Mermaid Markdown Syntax Highlighting 等),可以按以下步骤进行: 打开Mermaid代码文件:在VSCode中打开包含M…

【DeepSeek】如何将DeepSeek部署到本地?如何给本地 LLM 提供UI界面?CherryStudio 的使用

注:如果下面的所有操作,需要访问到 Github,可以先看这篇文章,了解如何流畅连接 Github 【Github】如何流畅链接Github.com-CSDN博客 一、下载 Ollama 1、访问网址 Ollama,点击下载 Ollama 到本地 选择自己计算机的系统…

mac开发环境配置笔记

1. 终端配置 参考: Mac终端配置笔记-CSDN博客 2. 下载JDK 到 oracle官网 下载jdk: oracle官网 :Java Downloads | Oraclemac的芯片为Intel系列下载 x64版本的jdk;为Apple Mx系列使用 Arm64版本;oracle官网下载时报错:400 Bad R…

交换机基本命令

目录 一、华为交换机基本命令 1、VRP视图层 2、命令帮助 3、配置设备名称 4、命令等级(一般生产过程没有下面的详细) 5、用户界面 6、配置Console认证 控制台接口(Console) 配置步骤示例 7、配置VTY登录(本文…

PHP图书借阅小程序源码

📚 图书借阅小程序:一键开启智慧阅读新篇章 🌟 这是一款由ThinkPHP与UniApp两大技术巨擘强强联手精心打造的图书借阅微信小程序,它犹如一座随身携带的移动图书馆,让您无论身处何地都能轻松畅游知识的海洋。创新的多书…

UE 播放视频

一.UI播放视频 1.导入视频文件至工程文件夹 2.文件夹内右健选择Media -> File Meida Source创建testFileMeidaSource文件。 编辑FilePath为当前视频 3.右键->Media->Media Player 创建testMediaPlayer文件 4.右键创建testMediaTexture。编辑MediaPlayer设置testMedia…

拦截器VS过滤器:Spring Boot中请求处理的艺术!

目录 一、拦截器(Interceptor)和过滤器(Filter):都是“守门员”!二、如何实现拦截器和过滤器?三、拦截器和过滤器的区别四、执行顺序五、真实的应用场景六、总结 🌟如果喜欢作者的讲…

react实例与总结(二)

目录 一、脚手架基础语法(16~17) 1.1、hello react 1.2、组件样式隔离(样式模块化) 1.3、react插件 二、React Router v5 2.1、react-router-dom相关API 2.1.1、内置组件 2.1.1.1、BrowserRouter 2.1.1.2、HashRouter 2.1.1.3、Route 2.1.1.4、Redirect 2.1.1.5、L…

巧用GitHub的CICD功能免费打包部署前端项目

近年来,随着前端技术的发展,前端项目的构建和打包过程变得越来越复杂,占用的资源也越来越多。我有一台云服务器,原本打算使用Docker进行部署,以简化操作流程。然而,只要执行sudo docker-compose -f deploy/…