根据参数在 excel 互操作中获取范围

get range in excel interop based on argument

我有一个接受参数的方法,基于一个参数,我必须在我的 excel sheet 中得到一个不同的范围,例如,如果我的参数是“2”,那么范围将是:

A1 - B1 (2 columns on the top row)

如果参数为“4”则范围为:

A1 - D1 (4 columns)

我的想法是像这样制作一个字符串数组:

public void excelExport(int columns) {
 string[] alphabet = { "A", "B", "C", "D" ... "Z"};
 Range range = ws.get_Range("A1", alphabet[columns] + "1");
}

然而,excel 可以进入双倍、三倍等字符列(我怀疑我是否需要进入三倍字符列 'AAA, AAB etc...')但是如你所见,我可以不可能创建一个包含 50 个索引的数组,因为如果我在某个时候需要 51 或 52 列怎么办?我的数组方法不起作用。

是否有更基本的方法根据参数中的数字动态获取范围?

添加这个辅助方法。它假定如果 columnNumber 设置为 1,则表示列 "A"。值2表示"B"等:

private string GetExcelColumnName(int columnNumber)
{
    int dividend = columnNumber;
    string columnName = String.Empty;
    int modulo;
    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;
        columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
        dividend = (int)((dividend - modulo) / 26);
    } 
    return columnName;
}

这样使用:

public void ExcelExport(int columnNumber)
{
    Range range = ws.get_Range("A1", GetExcelColumnName(columnNumber) + "1");
    // do stuff with range
}