Excel C API相当于Interop Range.Value在C#

试图找出如何读取引用的内容,并获得相同的结果和Interop / COM的Range.Value …即返回的对象[,]包含string,date时间和双打。

我正在使用ExcelDNA(和底层的XlCall.Excel调用C API)和两个…

ExcelReference.GetValue()XlCall.Excel( XlCall.xlfDeref, reference )

两者都返回等同于Interop / COM的Range.Value2的对象[,] …即返回的对象[,]仅包含string和双精度。

这个问题是date返回为double,我没有办法确定值是否应该是一个doubleDateTime

ExcelReference.GetValue()永远不会返回一个DateTime,因为这永远不是一个单元格的存储值 – 它只是一个应用于数值(双)值的显示格式。 货币和百分比格式相似。

您可以阅读“当前显示的单元格的内容,作为文本,包括从单元格的格式生成的任何附加的数字或符号”。 使用带有C API的xlfGetCell调用,使用选项53.但是,您必须确定该string是否代表您自己的date/时间。

也可以将“单元格的数字格式”作为文本(例如“m / d / yy”或“General”)来读取。 使用xlfGetCell选项7。