2

试图弄清楚如何读取引用的内容并获得相同的结果和 Interop/COM 的 Range.Value...即返回的 object[,] 包含字符串、DateTime 和双精度数。

我正在使用 ExcelDNA(和底层 XlCall.Excel 来调用 C API)和两者......

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

两者都返回一个object[,]等效于 Interop/COM 的 Range.Value2 ...即返回的 object[,] 仅包含字符串和双精度值。

问题在于 Dates 以 double 形式返回,我无法确定该值应该是 adouble还是 a DateTime

4

1 回答 1

1

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

您可以阅读“当前显示的单元格内容,作为文本,包括单元格格式产生的任何其他数字或符号。” 使用xlfGetCellC API 调用,使用选项 53。但是,您必须自己确定字符串是否代表日期/时间。

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

于 2015-12-14T15:00:47.140 回答