如何在C#中将数字数字转换为Excel列名,而不使用自动从Excel直接获取值。
Excel 2007的可能范围是1到16384,这是它支持的列数。结果值应该是excel列名的形式,例如A,AA,AAA等。
如果有人需要在不使用VBA的情况下在Excel中执行此操作,则以下方法:
=SUBSTITUTE(ADDRESS(1;colNum;4);"1";"")
colNum是列号
而在VBA中:
Function GetColumnName(colNum As Integer) As String
Dim d As Intege
Dim m As Intege
Dim name As String
d = colNum
name = ""
Do While (d > 0)
m = (d - 1) Mod 26
name = Chr(65 + m) + name
d = Int((d - m) / 26)
Loop
GetColumnName = name
End Functionc
以下是我如何做到这一点:
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;
}