【问题标题】:How do I use Excel-DNA to iterate over rows?如何使用 Excel-DNA 迭代行?
【发布时间】:2016-06-11 05:18:01
【问题描述】:

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

public static class Test {

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

我将使用将运行的按钮单击从 Excel 调用此加载项:

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

有关如何在 Excel-DNA 中执行此操作的任何指示?

【问题讨论】:

    标签: c# excel excel-dna


    【解决方案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";
        }
    }
    

    【讨论】:

    • 太棒了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多