c# - 是否可以从 VSTO 中的 Range.Value 获取一个 int?

标签 c# excel vsto int

我有一个 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 吗?我想也许 General0 会起作用,但似乎不行。

最佳答案

Range.Value 返回的数值是 double 值(可能是因为它们在 Excel 中都存储为 double 值,一个看起来像或不是整数的数字是格式化的结果)

我看到通过 GetValue 的唯一整数是错误的 ErrorCodes

例如

  • DIV/0!是一个值为 -2146826281 的 Int32

关于c# - 是否可以从 VSTO 中的 Range.Value 获取一个 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397579/

相关文章:

arrays - VBA 比较两个二维数组(行),VBA 抛出 "Type mismatch",声明正常

excel - 使用 INDEX-MATCH 进行多个非精确标准的查找 - 查找最符合条件的最近值时出现问题

c# - 在运行时向 RibbonDropDown 添加项目

c# - 使用 DateTime.TryParse() 检查几种日期格式

c# - 从类中获取 JSON 属性名称列表以在查询字符串中使用

excel - 计算动态数组/范围内的小计

c# - 使用 VSTO 检测 Word 2007 文档中的当前签名

xml - VSTO 在 Excel 中拖放

c# - Xamarin 表单绑定(bind)上下文和绑定(bind)

c# - 在 C# 中处理异常的最佳做法是什么?