一般來說要讀取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是什麼呢?