C#Interop定义一个工作表数组

我如何用4个worksheets定义一个数组?

例如,这些是我的worksheets

  var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsEvars = wb.Sheets["Evars"]; var wsProps = wb.Sheets["Props"]; var wsEvents = wb.Sheets["Events"]; var wsListVars = wb.Sheets["List Vars"]; 

我想把它们包含在一个数组中,如下所示:

 var sheets = [wsEvars, wsProps, wsEvents, wsListVars]; 

有了这些参考…

 using Microsoft.Office.Tools.Excel; using System.Linq; using Worksheet = Microsoft.Office.Tools.Excel.Worksheet; using Excel = Microsoft.Office.Interop.Excel; 

如果你只需要COM对象,你可以做…

 var wsEvars = wb.Sheets["Evars"]; var wsProps = wb.Sheets["Props"]; var wsEvents = wb.Sheets["Events"]; var wsListVars = wb.Sheets["List Vars"]; var sheets = new Excel.Worksheet[] {wsEvars, wsProps, wsEvents, wsListVars}; 

如果您需要VSTO主机接口…

 var _factory = Globals.Factory; var wsEvars = _factory.GetVstoObject(wb.Sheets["Evars"]); var wsProps = _factory.GetVstoObject(wb.Sheets["Props"]); var wsEvents = _factory.GetVstoObject(wb.Sheets["Events"]); var wsListVars = _factory.GetVstoObject(wb.Sheets["List Vars"]); var sheets = new Worksheet[] {wsEvars, wsProps, wsEvents, wsListVars}; 

或者与linq …

 var _sheetsArray = new[]{"wsEvars", "wsProps", "wsEvents", "wsListVars"}.Join( _wb.Worksheets.Cast<Excel.Worksheet>(), // outer name => name, s => s.Name, // key accessors (tag, s) => _factory.GetVstoObject(s) // output selector ).ToArray(); 

你可以声明和初始化一个数组,如下所示:

var sheets = new Microsoft.Office.Interop.Excel.Sheets[] { wsEvars, wsProps, wsEvents, wsListVars };