试图弄清楚如何读取引用的内容,并获得相同的结果和Interop/COM的Range.Value…即返回的对象[,]包含string、DateTime和doubles。
我正在使用ExcelDNA(和底层的XlCall.Excel来调用C API)和两者。。。
ExcelReference.GetValue()
和XlCall.Excel( XlCall.xlfDeref, reference )
两者都返回一个相当于Interop/COM的Range.Value2…的object[,]
,即返回的对象[,]只包含字符串和双精度。
这样做的问题是Dates返回为double,我无法确定该值是double
还是DateTime
。
ExcelReference.GetValue()
永远不会返回DateTime,因为它从来都不是单元格的存储值——它只是应用于数字(双精度)值的显示格式。货币和百分比格式类似。
您可以使用选项53,使用带有C API的xlfGetCell
调用来读取"当前显示的单元格内容,包括单元格格式所产生的任何附加数字或符号"。但是,您必须自己弄清楚该字符串是否代表日期/时间。
也可以使用xlfGetCell
选项7读取"单元格的数字格式,作为文本(例如,"m/d/yy"或"General")。"。