我有一个 VSTO 插件,我正在从 Excel 工作表中读取数据。
似乎几乎所有数字数据都被读取为double
。是否有可能从 Range.Value
获取 int
值?
这里有一些代码可以证明我的意思。
Worksheet w = (Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets["Sheet1"];
var value = ((Range)w.Cells[1, 1]).Value;
bool isInt = value is int;
bool isDouble = value is double;
无论我在工作表 Sheet1、单元格 A1 中使用哪种格式,isInt
总是返回 false。
我应该使用某种格式来获取 int
吗?我想也许 General
或 0
会起作用,但似乎不行。
最佳答案
Range.Value 返回的数值是 double 值(可能是因为它们在 Excel 中都存储为 double 值,一个看起来像或不是整数的数字是格式化的结果)
我看到通过 GetValue 的唯一整数是错误的 ErrorCodes
例如
- DIV/0!是一个值为 -2146826281 的 Int32
关于c# - 是否可以从 VSTO 中的 Range.Value 获取一个 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397579/