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
语句之前初始化sheet
variables…但是应该是这个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"];