如何区分date和其他数字格式(如数字/货币)在打开xml sdk SpreadSheet?

我正在阅读使用OpenXML SDK的xlsx文件。 阅读共享string值没有问题,但我不知道如何区分实际的数字和date,因为他们都有DataType为null,他们被存储为数字。

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

我试过在这篇文章中提到的解决scheme如何区分在OpenXML SpreadSheet中的OLE自动化date编号的内嵌数字? 。 但它不适用于货币格式,数字格式(负数格式请参阅附件截图)和一些自定义格式的数字和货币格式的截图。它将货币和数字格式转换为date

我在寻找

  1. 通用的解决scheme区分date和所有其他数字格式,以便格式(如数字,货币,科学)和自定义格式的数值的所有生成不会被转换为date

  2. 有没有通用的方式来格式单元格值的格式应用在Excel表单。现在我们正在处理每个格式单独

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

数字的StyleIndex是2,date是3

33938