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 };