前面講到我在做2BizBox ERP開發的時候,遇到導入數據的需求,然后我用JXL對Excel進行了一些操作。
但我們不能讓用戶輸入“1,2”這種坐標吧,如客戶編號坐標;用戶肯定喜歡用Excel的坐標,A1,B1等來表示。來個圖看看:
所以就要求程序把A1,B1等轉換成JXL認識的坐標。
第一步:校驗數據,看是否符合Excel坐標表示法,我用的是正則
第二步:把字母轉化成數字
代碼供參考
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;
}
當然程序也要做一些判斷,如果用戶輸入有誤的話,報一些錯誤提示。