算法思路:Excel字母列名索引26个字母组成的26进制计数,转化为10进制,最后终结果减1
/**
* Excel列字母索引转索引数字
*
* @param colName 列名,只能是大写字母[A-Z]
*/
public static int col2Index(String colName) {
int number = 0;
for (int i = 0; i < colName.length(); i++) {
char c = colName.charAt(i);
if (c < 'A' || c > 'Z') throw new RuntimeException("无效列名" + colName + ",只能是大写字母[A-Z]");
number += (c - 'A' + 1) * (int) Math.pow(26, colName.length() - i - 1);
}
return number - 1;
}