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

          Java操作EXCEL文件

          Posted on 2007-09-07 16:11 semovy 閱讀(344) 評論(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(工作?。ο?nbsp;   
                  wb=Workbook.getWorkbook(file);    
              } catch (BiffException e) {    
                  e.printStackTrace();    
              } catch (IOException e) {    
                  e.printStackTrace();    
              }    
                  
              if(wb==null)    
                  return null;    
                  
              //獲得了Workbook對象之后,就可以通過它得到Sheet(工作表)對象了    
              Sheet[] sheet = wb.getSheets();    
                  
              if(sheet!=null&&sheet.length>0){    
                  //對每個(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){    
                              //對每個(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)對象    
                      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(工作?。ο?nbsp;   
                      wb=Workbook.getWorkbook(file);    
                  } catch (BiffException e) {    
                      return res;    
                  } catch (IOException e) {    
                      return res;    
                  }    
                      
                  if(wb==null)    
                      return res;    
                      
                  //獲得了Workbook對象之后,就可以通過它得到Sheet(工作表)對象了    
                  Sheet[] sheet = wb.getSheets();    
                      
                  boolean breakSheet = false;    
                      
                  if(sheet!=null&&sheet.length>0){    
                      //對每個(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;    
                                  //對每個(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;    
              }
          主站蜘蛛池模板: 南郑县| 伊吾县| 沈丘县| 西和县| 无棣县| 子长县| 太谷县| 华容县| 大足县| 互助| 佳木斯市| 韶关市| 化州市| 天等县| 余江县| 嘉禾县| 綦江县| 漳州市| 长春市| 宁武县| 万全县| 龙里县| 九江市| 娱乐| 思南县| 延安市| 将乐县| 腾冲县| 桓台县| 永德县| 赤城县| 庆云县| 邢台市| 星子县| 自贡市| 道真| 柏乡县| 肃北| 东乡| 瑞丽市| 东莞市|