【问题标题】:openpyxl : data-validation read/write without treatmentopenpyxl:数据验证读/写,无需处理
【发布时间】:2026-01-29 13:25:01
【问题描述】:

我有一个要使用 python 脚本编辑的 excel xlsx 文件。 我知道 openpyxl 无法处理数据验证,但我只想编辑一些包含数据验证的单元格的值,然后保存工作簿而不编辑这些数据验证。

现在,当我尝试这样做时,我得到一个错误:

用户警告:不支持数据验证扩展,将 删除

然后我保存的文件不再包含数据验证。

有没有办法告诉 openpyxl 在保存工作簿时不要删除数据验证,即使它无法读取它?

【问题讨论】:

  • openpyxl 可能无法实现,但如果您在安装了 Excel 的 Windows PC 上,您可以编写 Python win32com.client 直接与文件交互。

标签: python excel openpyxl


【解决方案1】:

需要明确的是:openpyxl 确实支持原始 OOXML 规范所涵盖的数据验证。但是,从那时起,Microsoft 扩展了数据验证的选项,并且这些选项不受支持。您也许可以调整数据验证以使其受支持。

【讨论】:

  • 感谢您的回答。问题是我无法调整该文件的数据验证(它是我需要使用的标准文件)。所以我想我会按照 Martin Evans 的建议尝试 win32com.client。
  • 好吧,还有用于远程控制Excel的xlwings,没什么价值。可能会在某个时候添加对 MS 扩展的支持,但目前不是优先事项。不过,如果验证被完全剥夺,我会感到惊讶。