我需要一个算法来转换一个Excel列字母到其适当的数字。
本文将使用的语言是C#,但任何语言都可以,甚至是伪代码。
请注意,我将把它放在C#中,并且我不想使用office dll。
对于'A‘,预期的结果将是1
For 'AH‘= 34
For 'XFD‘= 16384
发布于 2009-03-20 20:43:27
public static int ExcelColumnNameToNumber(string columnName)
{
if (string.IsNullOrEmpty(columnName)) throw new ArgumentNullException("columnName");
columnName = columnName.ToUpperInvariant();
int sum = 0;
for (int i = 0; i < columnName.Length; i++)
{
sum *= 26;
sum += (columnName[i] - 'A' + 1);
}
return sum;
}
发布于 2009-03-20 20:48:22
int result = colName.Select((c, i) =>
((c - 'A' + 1) * ((int)Math.Pow(26, colName.Length - i - 1)))).Sum();
发布于 2009-03-21 09:18:21
int col = colName.ToCharArray().Select(c => c - 'A' + 1).
Reverse().Select((v, i) => v * (int)Math.Pow(26, i)).Sum();
https://stackoverflow.com/questions/667802
复制相似问题