2016-05-09 6 views
0

Я ищу простой пример excel-dna, итерации по ячейкам на листе. Я предположил бы, что у меня будет что-то вроде этого:Как использовать Excel-DNA для перебора строк?

public static class Test { 

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

Я бы Invoke этой надстройки из Excel с помощью нажатия кнопок, которая будет работать:

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

Любых указатели о том, как сделать это в Excel -ДНК?

ответ

1

Это работает:

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"; 
    } 
} 
+0

удивительным! Большое спасибо! – Denis

Смежные вопросы