c# excel数字索引与字母索引转换

 1 public static int NameToIndex(string columnName)
 2 {
 3   if (!Regex.IsMatch(columnName.ToUpper(), @"[A-Z]+")) { throw new Exception("参数非法!"); }
 5   int index = 0;
 6   char[] chars = columnName.ToUpper().ToCharArray();
 7   for (int i = 0; i < chars.Length; i++)
 8   {
 9     index += ((int)chars[i] - (int)'A' + 1) * (int)Math.Pow(26, chars.Length - i - 1);
10   }
11   return index;
12 }
13 
14 /// <summary>
15 /// 1、2、3 转换A、B、C
18 /// <param name="index"></param>
19 /// <returns></returns>
20 public static string IndexToName(int index)
21 {
22   if (index < 0) { throw new Exception("参数非法!"); }
24   List<string> chars = new List<string>();
25   do
26   {
27     if (chars.Count > 0) index--;
28     string tempchar = "";
29     if (chars.Count == 0)
30     {
31       tempchar = ((char)(index % 26 + (int)'A' - 1)).ToString();
32     }
33     else {
34       tempchar = ((char)(index % 26 + (int)'A')).ToString();
35     }
36     chars.Insert(0, tempchar);
37     index = (int)((index - index % 26) / 26);
38   } while (index > 0);
39   return String.Join(string.Empty, chars.ToArray());
40 }

 

posted @ 2017-04-20 15:46  头文件  阅读(521)  评论(0编辑  收藏  举报