我们都知道Excel表的列使用字母表示的,有时用java操作Excel表时,也许需要将字母表示的列转为数字表示,或将数字转为字母。下面写了个小程序,进行字母数字互转表示列。
package com.fei;
/**
* 我们都知道excel表的列是用字母表示的
* java操作excel时,有时难免需要把字母转为数字表示(A=1)
* 或把数字转为字母表示
*
*/
public class ExcelColumnTest {
public static void main(String[] args) {
System.out.println("A是第"+convertLetterToNum("A")+"列!");
System.out.println("AB是第"+convertLetterToNum("AB")+"列!");
System.out.println("5是"+convertNumToLetter(5)+"列!");
System.out.println("110是"+convertNumToLetter(110)+"列!");
}
/**
* 将字母表示的列转为用数字表示(如A=1,AB=28)
*/
public static int convertLetterToNum(String letters) {
letters = letters.toUpperCase();
int v = 0;
String regex = "[A-Z]+";
if (!letters.matches(regex))
return v;
int radix = 1;
for (int i = letters.length() - 1; i >= 0; i--) {
char c = letters.charAt(i);
v += (c - 'A' + 1) * radix;
radix *= 26;
}
return v;
}
/**
* 将数字表示的列转为字母表示(如1=A,28=AB,704=AAB)
*/
public static String convertNumToLetter(int colNum) {
String colLetter = "";
do {
colNum--;
colLetter = ((char) (colNum % 26 + (int) 'A')) + colLetter;
colNum = (int) ((colNum - colNum % 26) / 26);
} while (colNum > 0);
return colLetter;
}
}
运行结果:
A是第1列!
AB是第28列!
5是E列!
110是DF列!