JXL (Java Excel API)是一個用來動態讀寫Excel檔案的開源架構,利用它可以在任何支援Java的作業系統上動態讀寫Excel檔案。JXL 的首頁是:http://www.andykhan.com/jexcelapi/,可以在這裡下載到它的最新的版本。
你可以分別通過如下命令
java -jar jxl .jar -xml test.xls
java -jar jxl .jar -cvs test.xls
以xml和cvs格式查看test.xls,這是因為JXL 作者實現了一個用來示範的jxl .demo.Demo的類。
當然我們使用JXL 主要是用它來動態讀寫Excel檔案。現在就來看看JXL 在對Excel的讀和寫上都提供了那些支援。
先來看看Excel檔案中都有寫上面對象
1 檔案對象 2活頁簿對象 3 儲存格對象。
相應的在JXL 中就有Workbook,Sheet ,Cell 。通過這三個對象我們就可以實現Excel檔案的讀取工作。
我們先想想一下讀取步驟,不管是什麼樣的Excel操作架構必定都要經曆
1選取Excel檔案,2選擇活頁簿,3選擇Cell,4讀取資訊。
那麼現在就可以看看JXL 中這四步驟如何體現:
//通過Workbook的靜態方法getWorkbook選取Excel檔案
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
//通過Workbook的getSheet方法選擇第一個活頁簿(從0開始)
Sheet sheet = workbook.getSheet(0);
//通過Sheet方法的getCell方法選擇位置為C2的儲存格(兩個參數都從0開始)
Cell c2 = sheet.getCell(2,1);
//通過Cell的getContents方法把儲存格中的資訊以字元的形式讀取出來
String stringc2 = c2.getContents();
可以看到正是剛才所說的四個步驟。
我們都知道Excel儲存格是有格式的,那麼這些資訊如何取得。
Cell提供了一個getType方法能夠返回儲存格的類型資訊,同時JXL 提供了一個CellType類用來預設Excel中的類型資訊,而且JXL 提供了一些Cell類的子類用來分別用來表示各種類型的儲存格,如LabelCell,NumberCell,DateCell分別表示字元、數值、日期類型的儲存格。所以我們可以這樣寫:
if (c2.getType() == CellType.NUMBER)
{
NumberCell nc = (NumberCell) c2;
numberb2 = nc.getValue();
}
最後不要忘記關閉workbook以釋放資源:
workbook.close();
現在總結一下:三個對象,四個步驟,注意格式。就可以輕鬆的從Excel檔案中讀取資料。