隨筆 - 21  文章 - 12  trackbacks - 0
          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(4)

          隨筆檔案

          文章檔案

          新聞檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          前面講到我在做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)然程序也要做一些判斷,如果用戶輸入有誤的話,報一些錯誤提示。

          posted on 2012-06-19 09:54 zhangchuanzheng 閱讀(209) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 科尔| 繁昌县| 犍为县| 泽普县| 平果县| 双辽市| 景泰县| 龙岩市| 丹巴县| 昌黎县| 沙田区| 开鲁县| 苏尼特右旗| 晋宁县| 沾益县| 伊宁县| 广汉市| 甘肃省| 玛多县| 天全县| 南阳市| 东丰县| 时尚| 南溪县| 建宁县| 石家庄市| 新源县| 蓬莱市| 浑源县| 株洲县| 隆化县| 陆丰市| 鹿泉市| 栖霞市| 泸西县| 贵德县| 甘肃省| 乌苏市| 德令哈市| 祁连县| 互助|