您的位置:首页 > 编程语言 > Java开发

java 将 excel 中的字母类索引转为数字列索引

2019-05-23 13:49 2436 查看
版权声明:本文为博主原创文章,如需转载请注明原文出处: https://blog.csdn.net/u010979642/article/details/90175978

如上图, 将 excel 文档中的头部字母

A B C D E ... CA CB CC...
列索引转换为数字列索引

 

public class AALUtil {

/**
* 将 excel 中的字母列索引转换为数字列索引
*
* @param letterColIdx 字母列索引
* @return rlt 返回字母列索引对应的数字索引 A -> 0  BA -> 52 CA -> 78
* */
public static long transLetter2Num(String letterColIdx) {
long rlt = 0;
letterColIdx = letterColIdx.toUpperCase();

String[] sts = letterColIdx.split("");

int length = sts.length;
for (int i = 0; i < length; i++) {
String st = sts[i];
char[] cs = st.toCharArray();

int idx = (int)cs[0];

// 如果字符不是 A-Z 之间的字符, 则抛错
if (idx < 65 || idx > 90) {
throw new ExcelAnalysisException("Characters["+ st +"] not between A and Z.");
}

idx -= 64;
long num = (long) (idx * Math.pow(26, length - i - 1));
//            System.out.println("i: " + i + ", num: " + num);
rlt  += num;
}

return --rlt;
}

public static void main(String[] args) {
System.out.println("A: " + transLetter2Num("A"));
System.out.println("BA: " + transLetter2Num("BA"));
System.out.println("CA: " + transLetter2Num("CA"));
System.out.println("CAZ: " + transLetter2Num("CAZ"));
System.out.println("CBA: " + transLetter2Num("CBA"));
}

}
3ff7

运行结果

A: 0
BA: 52
CA: 78
CAZ: 2079
CBA: 2080
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: