使用 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 文件的自动化属性写入。在实际应用中,合理设计并统一规范属性命名体系,能够大幅提升后续在文档归档、数据资产分类及自动化检索等场景下的管理效率。

相关推荐
jyOverQ1 小时前
LangGraph Agent 模式详解:从自主决策到 Tool Calling 执行链
python·langchain
青 春 记 忆1 小时前
LeetCode 226. 翻转二叉树|Python 解法详解
python·算法·leetcode
小女孩真可爱1 小时前
GPT(1)----------从零实现 GPT 模型以生成文本
人工智能·python·gpt·nlp
码云骑士1 小时前
116-Python调用GPT-4V分析图片-Base64编码-多图-JSON结构化输出
开发语言·python·json
老郑聊AI业财智造1 小时前
TensorFlow 技术架构与源码分析
人工智能·python·深度学习·架构·tensorflow·软件工程
民乐团扒谱机1 小时前
【微科普】压缩感知(CS):违反了奈奎斯特采样定理?不先采集也能还原信号?大白话讲透稀疏采样、L1重建与OMP,一文吃透附代码
python·神经网络·线性代数·算法·数学建模·压缩感知·奈奎斯特
承渊政道1 小时前
【Python编程—从入门到实践】(Python操作列表深度教程:循环、切片、元组与代码风格)
开发语言·python·pycharm·列表·元组·切片
guwentian1 小时前
一文搞懂 AI Agent 安全护栏:用 Python 手写工具网关,把越权挡在执行层
人工智能·python·安全
布值倒区什么name1 小时前
Pycharm2026找不到编译器 点击运行运行不了
开发语言·python·pycharm