根据参数获取excel interop中的范围

时间:2015-01-12 23:26:32

标签: c# arrays excel office-interop

我有一个方法,它接受参数并根据我必须在excel表中获得不同范围的参数,例如,如果我的参数为'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等......')但是你可以看到,我不能有可能创建一个有50个索引的数组,因为如果我在某个时候需要51或52列呢?我的数组方法不起作用。

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

1 个答案:

答案 0 :(得分:1)

添加此辅助方法。它假定如果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
}