我需要一个算法将Excel列字母转换为正确的数字.
这将编写的语言是C#,但任何会做甚至伪代码.
请注意我将把它放在C#中,我不想使用office dll.
对于'A',预期结果将为1
因为'AH'= 34
对于'XFD'= 16384
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; }
int result = colName.Select((c, i) => ((c - 'A' + 1) * ((int)Math.Pow(26, colName.Length - i - 1)))).Sum();
int col = colName.ToCharArray().Select(c => c - 'A' + 1). Reverse().Select((v, i) => v * (int)Math.Pow(26, i)).Sum();
从最后到第一个循环浏览字符。将每个字母(A = 1,Z = 26)的值乘以26 ** N,将其相加。我不具备C#的字符串操作技能,因此这里有一些非常混杂的伪代码:
sum=0; len=length(letters); for(i=0;i