【问题标题】:Excel C API equivalent of Interop Range.Value in C#Excel C API 等效于 C# 中的 Interop Range.Value
【发布时间】:2016-03-19 10:55:46
【问题描述】:

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

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

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

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

问题是日期以双精度返回,我无法确定该值应该是 double 还是 DateTime

【问题讨论】:

    标签: excel excel-interop excel-dna c-api


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 2016-05-01
      • 2013-10-30
      • 2021-10-10
      相关资源
      最近更新 更多