[java]利用poi讀取Excel檔

一般來說要讀取excel檔一般的方法大概是先把Excel檔另存成cvs檔,利用","或是"\t"來做分格,

但是如果資料裡有分行\r\n或是""的那話,那處理起來就不方便了

這時候可以利用poi這個framework來讀取excel檔案

官網http://poi.apache.org/

POI 3.2-FINAL Released (2008-10-19)是穩定的版本,支援office 2000以下格式
POI 3.5 beta 6, and Office Open XML Support (2009-06-22)這個應該可以支援更新的office及open xml格式

載點:http://www.apache.org/dyn/closer.cgi/poi/

下載後解開有三個jar檔

poi-3.2-FINAL-20081019.jar

poi-contrib-3.2-FINAL-20081019.jar

poi-scratchpad-3.2-FINAL-20081019.jar

把這三個jar檔全都載入classpath裡

底下有一個簡單的範例有興趣可以看一下,

需要import的資料如下:

import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

大概的方式是把excel看成一個table,直接取用x y座標裡的內容

public void readExcel()  { 
        FileInputStream fis ; 
        POIFSFileSystem fs ; 
        HSSFWorkbook wb ; 
    String filePath = "c:/abc.xls" 
        try 
        { 
  
          
          fis = new FileInputStream(filePath); 
            fs = new POIFSFileSystem( fis ); 
            wb = new HSSFWorkbook(fs); 
          HSSFSheet sheet = wb.getSheetAt(0);  
// 取得Excel第一個sheet(從0開始) 
          HSSFCell cell; 
         
          //getPhysicalNumberOfRows這個比較好        
          for (int i = 0; i < sheet.getPhysicalNumberOfRows() ; i++) {  
// 由於第 0 Row 為 title, 故 i 從 1 開始 
              HSSFRow row = sheet.getRow(i); // 取得第 i Row 
              if(row!=null){ 
                int j = 0; 
              for (; j < 9; j++){  //看資料需要的欄數 
                  cell = row.getCell(j); 
          System.out.println(cell.toString());//取出j列j行的值                
              } 
              } 
             
          } 

             fis.close();//懶的寫到外面去了... 
        }catch(java.io.IOException e) 
        { 
          e.printStackTrace(); 
        } 

}

3 thoughts to “[java]利用poi讀取Excel檔”

yku 發表迴響取消回覆