【问题标题】:Reading Date from Excel File using OpenXML使用 OpenXML 从 Excel 文件中读取日期
【发布时间】:2010-12-29 10:22:47
【问题描述】:

我正在制作一个在 C# 中使用 OpenXML 来读取 excel 文件的库。我可以很好地阅读单元格文本和数字,但是在日期方面存在问题。 单元格有“日期”类型,但显然 Excel 2007 不保存该类型的日期,所以我无法判断我正在读取的值是否是日期,而是似乎使用样式。

我如何检测它是否是一个日期并返回它的字符串表示形式(例如:29-12-2010)?

【问题讨论】:

    标签: c# excel openxml openxml-sdk


    【解决方案1】:

    Excel 将日期存储为浮点值...整数部分是自 1900 年 1 月 1 日(或 1904 年 1 月 1 日,具体取决于所使用的日历)以来的天数,小数部分是一天(即时间部分)……因为 1900 年被认为是闰年,所以有点尴尬。

    唯一能区分数据和数字的是数字格式掩码。如果您可以读取格式掩码,则可以使用它将值标识为日期而不是数字...然后从基准日期计算日期值/格式。

    【讨论】:

    • 但是日期的属性“s”不总是具有“1”的值吗?我知道它定义了风格,但也许? ;)
    • s 属性引用了styles.xml 中的样式xf 条目,并且它并不总是日期的条目1...这完全取决于工作簿中使用了多少不同的样式。样式 xf 又引用了数字格式掩码。要识别包含日期的单元格,您需要执行样式 xf -> numberformat 查找,然后确定该 numberformat 掩码是否为日期/时间 numberformat 掩码(而不是例如百分比或会计 numberformat 掩码)
    • 还有一个问题 - 我现在正在查看 style.xml 的内容,在 部分中我看到如下元素:“"、"" 等,但没有 部分...是否有任何“标准”格式?还是我只是错过了什么?
    • @brovar,在 ECMA-376,第二版,第 1 部分 - 基础和标记语言参考部分 18.8.30 1964 页有一个列表。也可在此处获取部分内容:stackoverflow.com/questions/4730152/…
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多