如何在开放的xml sdk SpreadSheet中区分日期和其他数字格式(如数字/货币)?

时间:2016-05-20 05:35:15

标签: c# excel datetime openxml openxml-sdk

我正在使用OpenXML SDK阅读xlsx文件。读取共享字符串值时没有问题,但我不知道如何区分实际数字与日期,因为它们都具有null的DataType并且它们存储为数字。

使用DateTime.FromOADate()我可以将数字值转换为日期格式,但首先我需要确定单元格格式是否为日期,否则数字/货币格式的单元格值也会转换为日期。

我试过这篇文章中提到的解决方案 How to distinguish inline numbers from OLE Automation date numbers in OpenXML SpreadSheet?。 但它不适用于货币格式,数字格式(负数格式请参阅附带的屏幕截图)和一些自定义格式number and currency format screenshot。它会将货币和数字格式转换为日期

我正在寻找

  1. 将日期与所有其他数字格式区分开来的通用解决方案,以便所有格式(如数字,货币,科学)和自定义格式的数值都不会转换为日期

  2. 是否有按照Excel工作表格格式设置单元格值的通用方法。现在我们分别处理每个格式

1 个答案:

答案 0 :(得分:1)

每个单元格有2个属性r(CellReference)和s(StyleIndex)

数字的StyleIndex为2,日期为3

33938