使用 Python 设置 Excel 文件属性

在企业文档管理、报表归档、数据资产盘点等场景中,为 Excel 文件添加统一的元数据(如部门、版本号、负责人、创建时间)是非常有必要的。规范的文件属性不仅方便在文件管理系统或协同平台中检索和分类,也能在文档流转时保留关键的背景信息。手动为大量 Excel 文件逐个填写属性既繁琐又容易遗漏,通过 Python 编程方式则可以批量为工作簿设置属性,确保元数据的一致性和完整性。本文将介绍如何使用 Python 设置 Excel 工作簿的内置文档属性与自定义文档属性。

环境准备

本文使用 Spire.XLS for Python 库来操作 Excel 文件。该库提供了 DocumentPropertiesCustomDocumentProperties 两个属性集合,分别用于管理 Excel 预定义的内置属性和用户自定义的文档属性,并支持字符串、数字、日期、布尔值等多种数据类型。

通过以下命令安装:

bash 复制代码
pip install Spire.XLS

安装完成后,在脚本中导入所需模块即可开始使用。

设置内置文档属性

内置属性是 Excel 规范中预定义的元数据字段,包括标题(Title)、作者(Author)、主题(Subject)、关键字(Keywords)、类别(Category)、公司(Company)以及备注(Comments)等。在 Windows 文件属性页或 Office 详细信息面板中,这些字段可以直接被系统和办公软件读取展示。

通过操作 workbook.DocumentProperties 对象的对应属性,可以直接为 Excel 文档写入内置元数据:

python 复制代码
from spire.xls import *
from spire.xls.common import *

inputFile = "/示例.xlsx"
outputFile = "/设置内置属性.xlsx"

# 创建Workbook对象
workbook = Workbook()

# 加载Excel文档
workbook.LoadFromFile(inputFile)

# 设置Excel内置属性
workbook.DocumentProperties.Author = "陈文"
workbook.DocumentProperties.Title = "设置Excel文档属性"
workbook.DocumentProperties.Subject = "Python操作Excel文件"
workbook.DocumentProperties.Keywords = "Python, Excel, 文档属性, 示例"
workbook.DocumentProperties.Category = "处理 Excel 文件"
workbook.DocumentProperties.Company = "E-iceblue"
workbook.DocumentProperties.Comments = "文档属性是指描述和标识文档的各种信息。"

# 保存结果文件
workbook.SaveToFile(outputFile, FileFormat.Version2016)
workbook.Dispose()

直接对 AuthorTitle 等字段赋值即可完成写入。保存后,这些信息将永久固化在文件的元数据区域中。

设置自定义文档属性

除了预定义的内置属性外,业务场景中往往需要记录特定的附加信息(如内部编号、审核状态、最后修改时间等)。Spire.XLS 通过 CustomDocumentProperties 集合的 Add() 方法来添加自定义键值对。

每次调用 Add() 只需传入属性名和属性值,底层引擎会自动根据传入值的类型推断并存储对应的数据类型:

python 复制代码
from spire.xls import *
from spire.xls.common import *

inputFile = "示例.xlsx"
outputFile = "Excel自定义属性.xlsx"

# 创建Workbook对象
workbook = Workbook()

# 加载Excel文档
workbook.LoadFromFile(inputFile)

# 为Excel文档添加自定义属性
workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)
workbook.CustomDocumentProperties.Add("编辑者", "E-iceblue")
workbook.CustomDocumentProperties.Add("电话号码", 81705109)
workbook.CustomDocumentProperties.Add("修订编号", 7.12)
workbook.CustomDocumentProperties.Add("修订日期", DateTime.get_Now())

# 保存结果文件
workbook.SaveToFile(outputFile, FileFormat.Version2016)
workbook.Dispose()

代码中的 Add() 方法支持多种原生及 SDK 对应的数据类型:

  • 布尔值 True/False:如 _MarkAsFinal 用于标记文档是否为最终版本。
  • 字符串:如 "E-iceblue" 用于存储文本格式的编辑者名称。
  • 整型:如 81705109 存储为整数。
  • 浮点型:如 7.12 存储为双精度浮点数。
  • 日期时间:使用 DateTime.get_Now() 存入当前系统时间。

开发者无需显式声明属性的数据类型,传入相应类型的变量即可完成映射。

实用技巧:批量设置多个文件的文档属性

结合 Python 内置的 os 模块,可以将上述属性设置逻辑应用到文件夹下的所有文档中,实现自动化的批量处理:

python 复制代码
import os
from spire.xls import *
from spire.xls.common import *

folder = "./Demos/Data/ExcelFiles"
output_folder = "./Demos/Data/Output"

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

for filename in os.listdir(folder):
    if filename.endswith(".xlsx"):
        file_path = os.path.join(folder, filename)
        workbook = Workbook()
        workbook.LoadFromFile(file_path)
        
        # 批量写入内置属性与自定义属性
        workbook.DocumentProperties.Company = "财务部"
        workbook.CustomDocumentProperties.Add("归档年份", 2026)
        workbook.CustomDocumentProperties.Add("审核状态", "已通过")
        
        save_path = os.path.join(output_folder, filename)
        workbook.SaveToFile(save_path, FileFormat.Version2016)
        workbook.Dispose()
        print(f"已更新属性: {filename}")

该脚本遍历目录下的每个 Excel 文件,统一写入公司名称及自定义归档信息。处理完单个文件后立即调用 Dispose() 释放内存,保证在大批量文件操作时系统的稳定运行。

常见问题解答

Q1:如何修改已经存在的内置或自定义属性?

  • 内置属性 :直接对该属性重新赋值即可覆盖旧值,例如 workbook.DocumentProperties.Author = "新作者"
  • 自定义属性 :如果直接重新调用 Add("属性名", 新值),同名属性会被更新覆盖;或者可以通过 workbook.CustomDocumentProperties["属性名"].Value = 新值 来显式修改。

Q2:添加的自定义属性在 Microsoft Excel 中如何查看?

在 Microsoft Excel 中打开保存的文件,点击 文件 -> 信息 -> 属性 -> 高级属性 ,在弹出的窗口中选择 自定义 选项卡,即可在列表中查看到添加的键值对及其对应的数据类型和内容。

Q3:为什么有些自定义属性名称前会带有下划线(如 _MarkAsFinal)?

以下划线开头的自定义属性通常是 Microsoft Office 的约定标记。例如 _MarkAsFinal 设置为 True 时,Excel 打开文件时会在顶部提示"作者已将此文档标记为最终版本",以提醒用户防止误修改。

Q4:设置文档属性时对 Excel 的文件格式(.xls 与 .xlsx)有限制吗?

没有限制。Spire.XLS 同时支持基于二进制的 .xls (Version97-2003) 以及基于 OpenXML 的 .xlsx (Version2010/2013/2016 等)。只需在 SaveToFile() 时传入对应的 FileFormatExcelVersion 即可。

总结

通过 Python 为 Excel 文件配置元数据是实现企业文档规范化与自动化管理的高效途径。本文系统演示了利用内置属性配置作者、标题及公司等基础信息,并结合自定义属性灵活扩展布尔、数值、文本和日期等多种业务元数据的全过程。配合文件系统的遍历逻辑,开发者可以轻松实现海量 Excel 文件的自动化属性写入。在实际应用中,合理设计并统一规范属性命名体系,能够大幅提升后续在文档归档、数据资产分类及自动化检索等场景下的管理效率。

相关推荐
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】C++日志体系与spdlog封装的理论部分
开发语言·c++·ide·人工智能·学习·面试·trae
dear_bi_MyOnly1 小时前
C语言控制语句与循环逻辑精讲
c语言·开发语言·学习·分类
Dovis(誓平步青云)1 小时前
心情日记的安全编辑流程:输入校验、删除确认与状态回收
android·运维·服务器·开发语言·windows·安全
IT毕设实战小研1 小时前
基于大数据的桂林热门旅游数据分析与可视化
大数据·python·机器学习·数据分析·django·课程设计·旅游
SamChan901 小时前
用PostgreSQL+pgvector构建PDF翻译记忆库:向量相似度检索+增量更新实战
数据库·python·ai·postgresql·pdf·wpf
金融小师妹1 小时前
多因子市场推演:油价、英伟达与杰克逊霍尔如何影响资产定价的AI事件预测框架
人工智能·python·深度学习
大海变好AI1 小时前
AI 工作流怎么搭建提升效率
大数据·人工智能·python
叫我:松哥1 小时前
基于flask图书管理系统,技术栈flask+layui+sqlite+Echarts
后端·python·数据分析·flask·echarts·layui
落魄大学生之流水线上谋生计1 小时前
Python Literal[] 类型提示详解
开发语言·python