是否可以从VSTO中的Range.Value获取int?

Kri*_*per 5 c# int excel vsto

我有一个VSTO插件,我正在从Excel工作表中读取数据.

似乎几乎所有的数字数据都被读作了double.是否有可能从中获得int价值Range.Value

这是一些代码来证明我的意思.

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;
Run Code Online (Sandbox Code Playgroud)

无论我在工作表Sheet1中使用哪种格式,单元格A1,isInt总是返回false.

我应该使用哪种格式来获取int?我想也许General或者0会工作,但似乎没有.

Nom*_*Sim 0

文档中,当您调用var value = ((Range)w.Cells[1,1]).ValueValue类型时,该类型是从工作表中的值类型派生的。因此,您的 Excel 工作表的值似乎格式为doubles,而不是ints。Excel 没有可转换为 C# 的“整数”格式,最好的办法是integer在读入值时将其转换为 an。Value类型采用 Excel 工作表中的任何格式。

本文介绍 Excel 如何处理双精度浮点值。