我正在使用一些通过解析 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 问题:
什么表明 office open xml 单元格包含日期时间值
谢谢!