一般來說要讀取excel檔一般的方法大概是先把Excel檔另存成cvs檔,利用","或是"\t"來做分格,
但是如果資料裡有分行\r\n或是"”"的那話,那處理起來就不方便了
這時候可以利用poi這個framework來讀取excel檔案
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(); } }
請問如果要用XSSH讀EXCEL2007檔案要怎麼做呢?
不好意思…小弟學疏…請問xssh是什麼呢?