C#Interop名称在当前上下文中不存在

我正在使用C#Interop从Excel工作表取得值取决于传递给一个函数的参数,我得到以下错误:

当前上下文中不存在名字“表”

这是我的代码:

public void getIndexes(int num) { var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsEvars = wb.Sheets["Evars"]; var wsEvents = wb.Sheets["Events"]; if (num == 0) { var sheet = wsEvars; } if (num == 2) { var sheet = wsEvents; } if (num != 2) { var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 25]]; } } 

我想应该在第一个if语句之前初始化sheetvariables…但是应该是这个variables的types,因为它是一个COM对象?

在这里输入图像说明

您正在寻找的types是Excel.Worksheet 。

正如你正确地猜测,你可以在第一个if语句之前声明它。

 public void getIndexes(int num) { var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsEvars = wb.Sheets["Evars"]; var wsEvents = wb.Sheets["Events"]; Excel.Worksheet sheet = null; // Declared here if (num == 0) { sheet = wsEvars; // Rest of code ... 

作为参考,您可以将鼠标hover在关键字var ,工具提示会告诉您将要编译的types。

在这里输入图像说明

如果你有一个参考设置为Excel互操作,然后声明他们是这样的:

 Excel.Worksheet sheet = null; Excel.Workbook wb = Globals.ThisAddIn.Application.ActiveWorkbook; Excel.Worksheet wsEvars = wb.Sheets["Evars"]; Excel.Worksheet wsEvents = wb.Sheets["Events"];