根据参数在 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
}
我有一个接受参数的方法,基于一个参数,我必须在我的 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
}