在用代码操作Excel的过程中(如OpenXml),会用到把列名转化为数字,然后再进行计算确认列处理。
把列名转化为数字很容易实现定位。下面分享的这两个方法的主要作用是:
(1)把字母转为数字, 如1转为A,AA转为27 ,然后进行处理;
(2)把数字转为字母,A->1,27->AA……(这个比较常用)。
1、字母转数字
思想:从字符串的最后一位到第一位,乘以26的幂,依次相加
算法: 26^0 *(最后一位 ) + 26 ^ 1 * (前一位 ) + …… + 26 ^ n * (第一位)。
1 private int MoreCharToInt(string value)
2 {
3 int rtn = 0;
4 int powIndex = 0;
5
6 for (int i = value.Length - 1; i >= 0; i--)
7 {
8 int tmpInt = value[i];
9 tmpInt -= 64;
10
11 rtn += (int)Math.Pow(26, powIndex) * tmpInt;
12 powIndex++;
13 }
14
15 return rtn;
16 }
2、数字转为字母
思想: 字母对应的数字的算法为:26^0 * A + 26 ^ 1 * A ……,
按照这个规律 每次除以26,就可以得到每一位的值,然后进行转换。
但是有个小问题,就是如果这一位是字符 ‘Z’ 的话,就会进位,转换完后,处理进位的值即可(这里是关键哦)。
1 private string IntToMoreChar(int value)
2 {
3 string rtn = string.Empty;
4 List<int> iList = new List<int>();
5
6 //To single Int
7 while (value / 26 != 0 || value % 26 != 0)
8 {
9 iList.Add(value % 26);
10 value /= 26;
11 }
12
13 //Change 0 To 26
14 for (int j = 0; j < iList.Count - 1; j++)
15 {
16 if (iList[j] == 0)
17 {
18 iList[j + 1] -= 1;
19 iList[j] = 26;
20 }
21 }
22
23 //Remove 0 at last
24 if (iList[iList.Count - 1] == 0)
25 {
26 iList.Remove(iList[iList.Count - 1]);
27 }
28
29 //To String
30 for (int j = iList.Count - 1; j >= 0; j--)
31 {
32 char c = (char)(iList[j] + 64);
33 rtn += c.ToString();
34 }
35
36 return rtn;
37 }
小弟不才, 花了一段时间才想出来的,希望对大家能有所帮助吧!
以后对于 功能、方法的算法,我会尽量分享出来,供大家讨论,以获取更好的思路。
相关推荐
python生成字母序列生成excel列名索引,如ABCDEFGHIJKLMNOPQRSTUVWXYZ,AA-AZ,BA-BZ…
VBA编程时,有时候要把数字转换成Excel表格的字母列名。这个资料将提供这项功能,只要输入[1,256]之间的整数就可以得到相应列的列名。如 3为C,27为AA等!实现非常简单。欢迎参考!
在VBA编程中有时候会要把数字转换成表格的字母列名。这个资料将提供这项功能,只要输入[1,256]之间的整数就可以得到相应列的列名。如1为A,27为AA等! 交流QQ:1479819480
基于JavaScript开发的Excel列索引字母数字转换工具,可以输入Excel字母索引得到数字索引,也可以输入数字索引得到字母索引。一个小工具,可以作为参考。主要实现的是列字母、数字转换算法。基于JavaScript语言实现。
VBA编写的将数字转换成EXCEL的列字母,没有EXCEL中列数的限制,相当于数字进制。 可以使用在VB中。
数据通信基础PPT课件教程,数据通信是指传输的信息为数据形式的通信方式——数据为某种意义的数字信号的组合(字母、数字和符号)字母、数字和符号——离散的数字信号( 如二进制代码)——不同极性的电压、电流或...
excel字母和数字的转换,把对应的数字列转换为字母。如:A对应0 AA 26 AAA 702 ……
随机6万多个英文字母+数字用户名帐号excel批量下载
主要介绍了java编程实现根据EXCEL列名求其索引的方法,涉及Java元素遍历与数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
实现数字和字母的转换,类似于手机键盘上的数字和字母。
基于JS的Excel行列字母转换工具。WEB页面实现将Excel字母转换为数字,数字转换为字母。参考JS实现算法,也可以很容易的转换为Java实现。里面还有数字千分位显示Demo,做财务类开发的时候经常使用。
AlphaExcel是一个0.5KB的独立模块,用于将数字转换为Excel,例如将列名和Excel列字母转换回数字。 句法 alphaExcel ( thisArg ) ; // thisArg // Value to be converted // {string} {number} 例子 var ...
英文字母与数字的相互转换如: A->1 AA->27 26->Z 28->AB
Python 如何生成包含字母和数字的图片验证码 Python源码Python 如何生成包含字母和数字的图片验证码 Python源码Python 如何生成包含字母和数字的图片验证码 Python源码Python 如何生成包含字母和数字的图片验证码 ...
EXCEL取出字符串中的中文、英文字母、数字自定义函数.rar
中文字符转换为拼音首字母的C#程序,中文字符转换为拼音首字母的C#程序。中文字符转换为拼音首字母的C#程序。
英文字母和数字识别数据集,数据包含62个目录,其中包括26个大写字母、26个小写字母和10个数字的图像数据,共有6.3万张图片 英文字母和数字识别数据集,数据包含62个目录,其中包括26个大写字母、26个小写字母和10个...
随机生成10位随机排列 的字符串,包含字母和数字的随机排列
func Index2ExcelRow(index int)string{ var Letters = []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} // index := 10000 result := Letters[index &
字符串或 Excel 范围内的数字和符号将被忽略。 例子: xlscol(256) % 返回 'IV' xlscol('IV') % 返回 256 xlscol('A1:IV65536') % 返回 [1 256] 在帮助注释中查看更多示例。 笔记: CELLFUN 和 ARRAYFUN 允许程序...