我正在处理一些通过解析 xml 从 xlsx 文件读取数据的代码。除了日期单元格之外,一切都非常简单。
日期存储为整数,并有一个“s”属性,它是样式表的索引,可用于获取日期格式字符串。以下是之前 stackoverflow 问题中的一些示例,链接如下:
19 = 'h:mm:ss 上午/下午';
20 = 'h:mm';
21 = 'h:mm:ss';
22 = 'm/d/yy h:mm';
这些是来自 ooxml 标准的内置日期格式字符串,但是似乎 excel 倾向于使用自定义格式字符串而不是内置字符串。这是来自 Excel 2007 电子表格的示例格式。numFmtId 大于 164 是自定义格式。
Run Code Online (Sandbox Code Playgroud)<numFmt formatCode="MM/DD/YY" numFmtId="165"/>
确定单元格是否应该格式化为日期很困难,因为我能找到的唯一指标是 formatCode。这显然是一个日期,但可以通过多种方式对单元格进行格式化。我最初的尝试是在 formatCode 中查找 Ms、Ds 和 Ys,但这似乎有问题。
有没有人有这个问题的运气?目前似乎标准 excel 阅读库缺乏 xlsx 支持。我已经通读了标准,并在没有多少运气的情况下挖掘了很多 xlsx 文件。
最好的信息似乎来自这个 stackoverflow 问题:
谢谢!