如何使用Excel-DNA来遍历行?

我正在寻找excel-dna迭代工作表中的单元格的一个简单的示例。 我会想象我会有这样的事情:

public static class Test { [ExcelCommand(MenuName = "Range Tools", MenuText = "Iterator")] public static void IterateOverRows(string worksheetName, string startAddress, string endAddress) { ... } } 

我会从Excel中使用一个button单击将调用此加载项将运行:

  Application.Run("IterateOverRows", "Sheet1", "A1", "C3") 

任何关于如何在Excel-DNA中做到这一点的指针?

这工作:

 using Excel = Microsoft.Office.Interop.Excel; [ExcelCommand] public static void IterateOverRows(string worksheetName, string startAddress, string endAddress) { var app = (Excel.Application)ExcelDnaUtil.Application; var ws = (Excel.Worksheet)app.ActiveWorkbook.Sheets[worksheetName]; var rows = ws.Range[$"{startAddress}:{endAddress}"].Rows.OfType<Excel.Range>(); foreach (var row in rows) { row.Cells[1, 1].Value = "aaaa"; } } 

或者你可以使用它,并像Application.Run "IterateOverRows2", [Sheet1!B2:C10]

 [ExcelCommand] public static void IterateOverRows2([ExcelArgument(AllowReference = true)] object range) { var app = (Excel.Application)ExcelDnaUtil.Application; var xlRng = app.Range[XlCall.Excel(XlCall.xlfReftext, (ExcelReference)range, true)]; var rows = xlRng.Rows.OfType<Excel.Range>(); foreach (var row in rows) { row.Cells[1, 1].Value = "aaaa"; } }