private static List<string> Level = new List<string>
{
"A","B","C","D","E","F","G","H","I","J",
"K","L","M","N","O","P","Q","R","S","T",
"U","V","W","X","Y","Z",
};
/// <summary>
/// 数字转ADC字母
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string Num2ABCletter([Range(1, 300)] int value)
{
value = value - 1;
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
int remainder = value % 26;//余数
int front = (value - remainder) / 26;//
if (front == 0)
{
return Level[remainder];
}
else if (front < 26)
{
return Level[front - 1] + Level[remainder];
}
else
{
return Num2ABCletter(front) + Level[remainder];
}
}
/// <summary>
/// ABC字母转数字
/// BA=53
/// YZ =676
/// ZA =677
/// YYZ=17576
/// </summary>
/// <param name="ABCletter"></param>
/// <returns></returns>
public static int ABCletter2Num(string ABCletter)
{
int ret = 0;
var ArrChar = ABCletter.ToCharArray().Reverse().ToArray();
var Num = (int)ArrChar.LongCount();
while (Num > 0)
{
var charStr = ArrChar[--Num];
var idx = Level.FindIndex(x => x == charStr.ToString())+1;
if (Num > 0)
ret += idx * (int)Math.Pow(26, Num);
else
ret += idx;
}
return ret;
}