[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();
        }

}




2 comments on “[java]利用poi讀取Excel檔

1 Pings/Trackbacks 於 "[java]利用poi讀取Excel檔"

發表迴響