/// <summary>
/// 将指定的自然数转换为26进制表示。映射关系:[1-26] ->[A-Z]。
/// </summary>
/// <param name="n">自然数(如果无效,则返回空字符串)。</param>
/// <returns>26进制表示。</returns>
public static string ToNumberSystem26(int n)
{
string s = string.Empty;
while (n > 0)
{
int m = n % 26;
if (m == 0) m = 26;
s = (char)(m + 64) + s;
n = (n - m) / 26;
}
return s;
}
/// <summary>
/// 由Excel中的列字母转换为数字
/// </summary>
/// <param name="column"></param>
/// <returns></returns>
public static int ToIndex(string columnName)
{
if (!Regex.IsMatch(columnName.ToUpper(), @"[A-Z]+"))
{
throw new Exception("invalid parameter");
}
int index = 0;
char[] chars = columnName.ToUpper().ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
index += ((int)chars[i] - (int)'A' + 1) * (int)Math.Pow(26, chars.Length - i - 1);
}
return index;
}