如何在C#中将数值转换为Excel列名,而不使用自动从Excel直接获取值。
Excel2007的可能范围是1到16384,这是它支持的列数。结果值应采用excel列名的形式,例如A、AA、AAA等。
发布于 2008-10-08 14:01:28
我是这样做的:
private string GetExcelColumnName(int columnNumber)
{
string columnName = "";
while (columnNumber > 0)
{
int modulo = (columnNumber - 1) % 26;
columnName = Convert.ToChar('A' + modulo) + columnName;
columnNumber = (columnNumber - modulo) / 26;
}
return columnName;
}发布于 2009-01-30 14:25:34
如果任何人需要在没有VBA的情况下在Excel中执行此操作,这里有一种方法:
=SUBSTITUTE(ADDRESS(1;colNum;4);"1";"")其中colNum是列号
在VBA中:
Function GetColumnName(colNum As Integer) As String
Dim d As Integer
Dim m As Integer
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 Function发布于 2008-10-08 10:09:18
对不起,这是Python而不是C#,但至少结果是正确的:
def ColIdxToXlName(idx):
if idx < 1:
raise ValueError("Index is too small")
result = ""
while True:
if idx > 26:
idx, r = divmod(idx - 1, 26)
result = chr(r + ord('A')) + result
else:
return chr(idx + ord('A') - 1) + result
for i in xrange(1, 1024):
print "%4d : %s" % (i, ColIdxToXlName(i))https://stackoverflow.com/questions/181596
复制相似问题