查看: 22|回复: 3

Python脚本批量设置Excel工作簿内置与自定义文档属性的实践方法

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
在Excel文件归档和企业文档管理场景中,统一设置文件的作者、部门、版本号等元数据信息,有助于后续检索和分类。如果文件数量庞大,逐个在属性面板里填写显然低效。利用Python编程方式操作Excel文档属性,可以让这一过程自动化,保证元数据的一致性和完整性。

本文使用的Python库是Spire.XLS for Python,它提供了DocumentProperties和CustomDocumentProperties两个集合,分别用于管理Excel预定义的内置属性和用户自定义属性。安装命令如下:
  1. pip install Spire.XLS
复制代码

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

内置文档属性是Excel规范中预定义的元数据字段,例如标题、作者、主题、关键字、类别、公司和备注等。这些字段在Windows文件属性页或者Office详细信息面板中都可以被系统直接读取。通过workbook.DocumentProperties对象的对应属性赋值,就可以写入这些信息。下面的示例加载了一个现有工作簿,并设置了内置属性:
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. inputFile = "/示例.xlsx"
  4. outputFile = "/设置内置属性.xlsx"
  5. workbook = Workbook()
  6. workbook.LoadFromFile(inputFile)
  7. workbook.DocumentProperties.Author = "陈文"
  8. workbook.DocumentProperties.Title = "设置Excel文档属性"
  9. workbook.DocumentProperties.Subject = "Python操作Excel文件"
  10. workbook.DocumentProperties.Keywords = "Python, Excel, 文档属性, 示例"
  11. workbook.DocumentProperties.Category = "处理 Excel 文件"
  12. workbook.DocumentProperties.Company = "E-iceblue"
  13. workbook.DocumentProperties.Comments = "文档属性是指描述和标识文档的各种信息。"
  14. workbook.SaveToFile(outputFile, FileFormat.Version2016)
  15. workbook.Dispose()
复制代码

直接给Author、Title等字段赋值,保存后元数据就会写入文件。

除了内置属性,业务场景中通常还需要一些附加信息,例如内部编号、审核状态、最后修改时间等。这些自定义信息可以通过CustomDocumentProperties集合的Add方法添加。Add方法接收属性名和属性值,底层会根据值的类型自动推断并存储对应的数据类型。来看代码:
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. inputFile = "示例.xlsx"
  4. outputFile = "Excel自定义属性.xlsx"
  5. workbook = Workbook()
  6. workbook.LoadFromFile(inputFile)
  7. workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)
  8. workbook.CustomDocumentProperties.Add("编辑者", "E-iceblue")
  9. workbook.CustomDocumentProperties.Add("电话号码", 81705109)
  10. workbook.CustomDocumentProperties.Add("修订编号", 7.12)
  11. workbook.CustomDocumentProperties.Add("修订日期", DateTime.get_Now())
  12. workbook.SaveToFile(outputFile, FileFormat.Version2016)
  13. workbook.Dispose()
复制代码

上述代码展示了不同类型的自定义属性:True是布尔值,用于标记最终状态;"E-iceblue"是字符串;81705109是整数;7.12是浮点数;DateTime.get_Now()则是一个日期时间对象。开发者不需要显式声明属性类型,传入对应类型的变量即可。

如果需要对整个文件夹下的Excel文件批量设置文档属性,可以结合Python内置的os模块实现。下面的脚本会遍历指定目录下的所有.xlsx文件,统一写入公司名称和归档信息,并输出到新的文件夹:
  1. import os
  2. from spire.xls import *
  3. from spire.xls.common import *
  4. folder = "./Demos/Data/ExcelFiles"
  5. output_folder = "./Demos/Data/Output"
  6. if not os.path.exists(output_folder):
  7.     os.makedirs(output_folder)
  8. for filename in os.listdir(folder):
  9.     if filename.endswith(".xlsx"):
  10.         file_path = os.path.join(folder, filename)
  11.         workbook = Workbook()
  12.         workbook.LoadFromFile(file_path)
  13.         workbook.DocumentProperties.Company = "财务部"
  14.         workbook.CustomDocumentProperties.Add("归档年份", 2026)
  15.         workbook.CustomDocumentProperties.Add("审核状态", "已通过")
  16.         save_path = os.path.join(output_folder, filename)
  17.         workbook.SaveToFile(save_path, FileFormat.Version2016)
  18.         workbook.Dispose()
  19.         print(f"已更新属性: {filename}")
复制代码

这个脚本在每处理完一个文件后立刻调用Dispose释放内存,避免大量文件同时打开导致资源占用过高。

关于操作过程中可能遇到的问题,这里整理几个要点。

修改已经存在的内置属性时,直接对该属性重新赋值即可覆盖旧值。例如想换作者,用workbook.DocumentProperties.Author = "新作者"就行。对于自定义属性,如果再次调用Add("属性名", 新值),同名属性会被覆盖;也可以通过workbook.CustomDocumentProperties["属性名"].Value = 新值来显式修改。

添加的自定义属性在Excel中查看时,可以打开文件后依次点击“文件”->“信息”->“属性”->“高级属性”,在弹出的窗口中选择“自定义”选项卡,即可看到键值对及其数据类型和内容。

有些自定义属性名称前带有下划线,例如_MarkAsFinal。这是Microsoft Office的约定标记。当_MarkAsFinal为True时,Excel打开文件会在顶部提示“作者已将此文档标记为最终版本”,提醒用户防止误修改。

关于文件格式兼容性,使用Spire.XLS处理.xls和.xlsx都没有问题。保存时只需在SaveToFile方法中传入对应的FileFormat或ExcelVersion即可。

总的来说,通过Python为Excel配置文档属性,既能方便地设置作者、标题、公司等基础信息,也能灵活扩展布尔、数值、文本和日期等自定义业务元数据。配合文件系统遍历,可以轻松实现批量自动化写入。合理设计属性命名规范,对后续文档归档、数据资产分类和自动化检索都会有明显帮助。
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Python脚本批量设置Excel工作簿内置与自定义文档属性的实践方法

感谢分享,正好最近需要批量整理一批Excel文件的元数据,之前用openpyxl只能改部分内置属性,自定义属性这块折腾了好久没搞定。你提到的Spire.XLS方案看起来方便很多,尤其是自定义属性按类型自动推断这点,省去了手动转类型的麻烦。 想请教一下:批量处理时如果目标文件里已经有同名的自定义属性,`Add` 方法会直接覆盖还是报错?还有这个库在商业项目里用的话,授权方面有什么需要注意的吗?
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Python脚本批量设置Excel工作簿内置与自定义文档属性的实践方法

正好最近在整理一批Excel归档文件,手动改作者和公司属性太痛苦了,这个批量思路很实用。尤其是自定义属性那段,用Add方法自动推断类型,省了不少转换的麻烦。不过想请问一下,如果文件夹里有旧版.xls文件,代码里只判断了.xlsx,需要额外处理吗?另外Spire.XLS这个库在批量处理大量文件时内存占用怎么样?希望楼主多分享一些实际使用中的注意事项。
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Python脚本批量设置Excel工作簿内置与自定义文档属性的实践方法

感谢分享,正好最近在处理文件归档的事,这教程很实用。有个小问题想请教下:批量处理时如果多个文件里已经有同名自定义属性,重复Add会不会报错?还是需要先判断存在再覆盖?另外这个库处理.xls老格式支持吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-8-25 15:15 , Processed in 0.024217 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部