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

          常用鏈接

          留言簿(4)

          隨筆檔案

          文章檔案

          新聞檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          前面講到我在做2BizBox ERP開發(fā)的時(shí)候,遇到導(dǎo)入數(shù)據(jù)的需求,然后我用JXL對(duì)Excel進(jìn)行了一些操作。

          但我們不能讓用戶輸入“1,2”這種坐標(biāo)吧,如客戶編號(hào)坐標(biāo);用戶肯定喜歡用Excel的坐標(biāo),A1,B1等來(lái)表示。來(lái)個(gè)圖看看:


          所以就要求程序把A1,B1等轉(zhuǎn)換成JXL認(rèn)識(shí)的坐標(biāo)。

          第一步:校驗(yàn)數(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)然程序也要做一些判斷,如果用戶輸入有誤的話,報(bào)一些錯(cuò)誤提示。

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 同德县| 公主岭市| 探索| 丽水市| 巴林左旗| 陆良县| 天镇县| 增城市| 凤山县| 天气| 海伦市| 上思县| 拉孜县| 安泽县| 长乐市| 石门县| 长垣县| 张家港市| 霍林郭勒市| 平顶山市| 枣庄市| 淮滨县| 黎城县| 漾濞| 合山市| 信丰县| 新营市| 荔波县| 农安县| 石阡县| 博罗县| 威宁| 宝山区| 当阳市| 改则县| 喀什市| 锦州市| 崇仁县| 平顶山市| 遂宁市| 尼勒克县|