前面講到我在做2BizBox ERP開發(fā)的時候,遇到導(dǎo)入數(shù)據(jù)的需求,然后我用JXL對Excel進(jìn)行了一些操作。
但我們不能讓用戶輸入“1,2”這種坐標(biāo)吧,如客戶編號坐標(biāo);用戶肯定喜歡用Excel的坐標(biāo),A1,B1等來表示。來個圖看看:
所以就要求程序把A1,B1等轉(zhuǎn)換成JXL認(rèn)識的坐標(biāo)。
第一步:校驗數(shù)據(jù),看是否符合Excel坐標(biāo)表示法,我用的是正則
第二步:把字母轉(zhuǎn)化成數(shù)字
代碼供參考
publicstaticint[] splitExcelCell(String coordinate) {
coordinate = coordinate.trim().toUpperCase();
int[] colAndRow =newint[2];
if (coordinate.matches("[A-Z]{1,2}[0-9]+")) {
StringBuffer tmpS = new StringBuffer();
for (int i = 0; i < coordinate.length(); i++) {
char c =coordinate.charAt(i);
if (c >= 48 && c <= 57) {
colAndRow[0] = Integer.parseInt(coordinate.substring(i));
break;
}
tmpS.append(c);
}
colAndRow[1] = splitExcelCol(tmpS.toString());
}
return colAndRow;
}
publicstaticint splitExcelCol(String coordinate) {
coordinate = coordinate.trim().toUpperCase();
int colNumber = 0;
if (coordinate.matches("[A-Z]{1,2}")) {
if (coordinate.length() == 1) {
int k = coordinate.charAt(0) - 64;
colNumber = k;
}
elseif (coordinate.length() == 2) {
int i = coordinate.charAt(0) - 64;
int j = coordinate.charAt(1) - 64;
colNumber = i * 26 + j;
}
}
return colNumber;
}
當(dāng)然程序也要做一些判斷,如果用戶輸入有誤的話,報一些錯誤提示。