python - 确定 xlsx 单元格是否为 Excel 2007 电子表格的日期格式

标签 python excel openxml xlsx

我正在使用一些代码,通过解析 xml 从 xlsx 文件中读取数据。除了日期单元格之外,一切都非常简单。

日期存储为整数,并具有“s”属性,该属性是样式表的索引,可用于获取日期格式字符串。以下是之前 stackoverflow 问题中的一些示例,链接如下:

19 = 'h:mm:ss AM/PM';

20 = 'h:mm';

21 = 'h:mm:ss';

22 = 'm/d/yy h:mm';

这些是来自 ooxml 标准的内置日期格式字符串,但是 excel 似乎倾向于使用自定义格式字符串而不是内置字符串。以下是 Excel 2007 电子表格中的示例格式。 numFmtId大于164是自定义格式。

<numFmt formatCode="MM/DD/YY" numFmtId="165"/>

确定单元格是否应格式化为日期很困难,因为我能找到的唯一指示符是 formatCode。这显然是一个日期,但单元格的格式可以有多种。我最初的尝试是在 formatCode 中查找 Ms、Ds 和 Ys,但这似乎有问题。

有人有幸解决过这个问题吗?看来标准的 Excel 阅读库目前缺乏 xlsx 支持。我已经通读了标准并挖掘了很多 xlsx 文件,但运气不佳。

最好的信息似乎来自这个 stackoverflow 问题:

what indicates an office open xml cell contains a date time value

谢谢!

最佳答案

Dates are stored as integers

在 Excel 数据模型中,实际上不存在整数这样的东西。一切都是漂浮物。日期和日期时间是 float ,表示自变量纪元以来的天数和分数。时间是一天的一小部分。

It seems like the standard excel reading libraries are lacking in xlsx support at this time.

谷歌(“xlsxrd”)。要了解最新信息,请加入the python-excel group .

编辑我发现您有 already asked a question there 。如果您在那里提出了像这个问题一样具体的问题,或者回复了我的澄清请求,您将在两周前获得此信息。

查看 xlrd 文档。前面讨论了 Excel 日期。所有这些都适用于 Excel 2007 以及早期版本。特别是:需要解析自定义格式。有必要有一个用于日期格式的“标准”格式索引表。某些地方列出的“标准”格式不包括 CJK 语言环境中使用的格式。

适合您的选项:

(1) 借用xlrd源代码,包括xldate_as_tuple函数。

(2) 选项 (1) + 获取 xlsxrd bolt 固定套件并借用其源代码。

(3) [推荐] 获取 xlsxrd bolt 固定套件并使用它...您将获得一组可在 Excel 版本 2.0 至 2007 和 Python 版本 2.1 至 2.7 之间运行的 API。

关于python - 确定 xlsx 单元格是否为 Excel 2007 电子表格的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948998/

相关文章:

python - Pandas - 通过映射重命名每个级别的分类值时出现 'returning-a-view-versus-a-copy' 错误

Excel OFFSET 函数仅适用于可见单元格/公式以生成重复单元格的摘要标题

c++ - 是否有用于编写 docx 文件的开发工具包/库(用 C 或 C++ 编写)?

c# - 如何在 OpenXML SDK 中拆分文档

c# - 如何重新编号 WordProcessingDocument 中的页面?

python - Pandas read_html 在 Python 中返回具有 NaN 值的列

Python 模块初始化顺序?

python - python 中的并行计算比常规 for 循环慢得多

vba - 删除列中所有有错误的行

excel - VBA 将工作表保存到受密码保护的 PDF