posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Java操作EXCEL文件

          Posted on 2007-09-07 16:11 semovy 閱讀(344) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA應(yīng)用
          很久以來都想研究一下利用java操作Excel的方法,今天沒事,就稍微了解了一下,特總結(jié)一下。利用java操作Excel,有個(gè)開源的東東-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下載。 

          一.讀取Excel文件內(nèi)容

          java 代碼
          /**讀取Excel文件的內(nèi)容   
           * @param file  待讀取的文件   
           * @return   
           */   
          public static String readExcel(File file){    
              StringBuffer sb = new StringBuffer();    
                  
              Workbook wb = null;    
              try {    
                  //構(gòu)造Workbook(工作薄)對(duì)象    
                  wb=Workbook.getWorkbook(file);    
              } catch (BiffException e) {    
                  e.printStackTrace();    
              } catch (IOException e) {    
                  e.printStackTrace();    
              }    
                  
              if(wb==null)    
                  return null;    
                  
              //獲得了Workbook對(duì)象之后,就可以通過它得到Sheet(工作表)對(duì)象了    
              Sheet[] sheet = wb.getSheets();    
                  
              if(sheet!=null&&sheet.length>0){    
                  //對(duì)每個(gè)工作表進(jìn)行循環(huán)    
                  for(int i=0;i 
                      //得到當(dāng)前工作表的行數(shù)    
                      int rowNum = sheet[i].getRows();    
                      for(int j=0;j 
                          //得到當(dāng)前行的所有單元格    
                          Cell[] cells = sheet[i].getRow(j);    
                          if(cells!=null&&cells.length>0){    
                              //對(duì)每個(gè)單元格進(jìn)行循環(huán)    
                              for(int k=0;k 
                                  //讀取當(dāng)前單元格的值    
                                  String cellValue = cells[k].getContents();    
                                  sb.append(cellValue+"\t");    
                              }    
                          }    
                          sb.append("\r\n");    
                      }    
                      sb.append("\r\n");    
                  }    
              }    
              //最后關(guān)閉資源,釋放內(nèi)存    
              wb.close();    
              return sb.toString();    
          }   

          二.寫入Excel文件

          這里有很多格式了,比如文本內(nèi)容加粗,加上某些顏色等,可以參考jxl的api,同時(shí)還推薦一篇不錯(cuò)的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10

          java 代碼
          /**生成一個(gè)Excel文件   
               * @param fileName  要生成的Excel文件名   
               */   
              public static void writeExcel(String fileName){    
                  WritableWorkbook wwb = null;    
                  try {    
                      //首先要使用Workbook類的工廠方法創(chuàng)建一個(gè)可寫入的工作薄(Workbook)對(duì)象    
                      wwb = Workbook.createWorkbook(new File(fileName));    
                  } catch (IOException e) {    
                      e.printStackTrace();    
                  }    
                  if(wwb!=null){    
                      //創(chuàng)建一個(gè)可寫入的工作表    
                      //Workbook的createSheet方法有兩個(gè)參數(shù),第一個(gè)是工作表的名稱,第二個(gè)是工作表在工作薄中的位置    
                      WritableSheet ws = wwb.createSheet("sheet1", 0);    
                          
                      //下面開始添加單元格    
                      for(int i=0;i<10;i++){    
                          for(int j=0;j<5;j++){    
                              //這里需要注意的是,在Excel中,第一個(gè)參數(shù)表示列,第二個(gè)表示行    
                              Label labelC = new Label(j, i, "這是第"+(i+1)+"行,第"+(j+1)+"列");    
                              try {    
                                  //將生成的單元格添加到工作表中    
                                  ws.addCell(labelC);    
                              } catch (RowsExceededException e) {    
                                  e.printStackTrace();    
                              } catch (WriteException e) {    
                                  e.printStackTrace();    
                              }    
             
                          }    
                      }    
             
                      try {    
                          //從內(nèi)存中寫入文件中    
                          wwb.write();    
                          //關(guān)閉資源,釋放內(nèi)存    
                          wwb.close();    
                      } catch (IOException e) {    
                          e.printStackTrace();    
                      } catch (WriteException e) {    
                          e.printStackTrace();    
                      }    
                  }    
              }    

          三.在一個(gè)Excel文件中查找是否包含某一個(gè)關(guān)鍵字

          java 代碼
          /**搜索某一個(gè)文件中是否包含某個(gè)關(guān)鍵字   
               * @param file  待搜索的文件   
               * @param keyWord  要搜索的關(guān)鍵字   
               * @return   
               */   
              public static boolean searchKeyWord(File file,String keyWord){    
                  boolean res = false;    
                      
                  Workbook wb = null;    
                  try {    
                      //構(gòu)造Workbook(工作?。?duì)象    
                      wb=Workbook.getWorkbook(file);    
                  } catch (BiffException e) {    
                      return res;    
                  } catch (IOException e) {    
                      return res;    
                  }    
                      
                  if(wb==null)    
                      return res;    
                      
                  //獲得了Workbook對(duì)象之后,就可以通過它得到Sheet(工作表)對(duì)象了    
                  Sheet[] sheet = wb.getSheets();    
                      
                  boolean breakSheet = false;    
                      
                  if(sheet!=null&&sheet.length>0){    
                      //對(duì)每個(gè)工作表進(jìn)行循環(huán)    
                      for(int i=0;i 
                          if(breakSheet)    
                              break;    
                              
                          //得到當(dāng)前工作表的行數(shù)    
                          int rowNum = sheet[i].getRows();    
                              
                          boolean breakRow = false;    
                              
                          for(int j=0;j 
                              if(breakRow)    
                                  break;    
                              //得到當(dāng)前行的所有單元格    
                              Cell[] cells = sheet[i].getRow(j);    
                              if(cells!=null&&cells.length>0){    
                                  boolean breakCell = false;    
                                  //對(duì)每個(gè)單元格進(jìn)行循環(huán)    
                                  for(int k=0;k 
                                      if(breakCell)    
                                          break;    
                                      //讀取當(dāng)前單元格的值    
                                      String cellValue = cells[k].getContents();    
                                      if(cellValue==null)    
                                          continue;    
                                      if(cellValue.contains(keyWord)){    
                                          res = true;    
                                          breakCell = true;    
                                          breakRow = true;    
                                          breakSheet = true;    
                                      }    
                                  }    
                              }    
                          }    
                      }    
                  }    
                  //最后關(guān)閉資源,釋放內(nèi)存    
                  wb.close();    
                      
                  return res;    
              }
          主站蜘蛛池模板: 吉林省| 泰宁县| 宝兴县| 武强县| 九寨沟县| 松原市| 清河县| 博罗县| 惠州市| 茌平县| 正阳县| 花莲市| 绥阳县| 梅河口市| 观塘区| 茌平县| 昌宁县| 文山县| 夏邑县| 朝阳县| 巩留县| 新营市| 德州市| 仙居县| 柏乡县| 惠东县| 康保县| 黎平县| 连平县| 石柱| 琼海市| 宿松县| 孟村| 休宁县| 布拖县| 密云县| 隆回县| 博乐市| 吉林省| 安泽县| 海盐县|