1.1Excel簡介
一個excel文件就是一個工作簿workbook,一個工作簿中可以創建多張工作表sheet,而一個工作表中包含多個單元格Cell,這些單元格都是由列(Column)行(Row)組成,列用大寫英文字母表示,從A開始到Z共26列,然后再從AA到AZ又26列,再從BA到BZ再26列以此類推。行則使用數字表示,例如;A3 表示第三行第一列,E5表示第五行第五列。
1.2 POI工具包
JAVA中操作Excel的有兩種比較主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000也即以.xls為后綴的excel。而poi可以操作Excel 95及以后的版本,即可操作后綴為 .xls 和 .xlsx兩種格式的excel。
POI全稱 Poor Obfuscation Implementation,直譯為“可憐的模糊實現”,利用POI接口可以通過JAVA操作Microsoft office 套件工具的讀寫功能。官網:http://poi.apache.org ,POI支持office的所有版本,所以選擇POI來講解。
1.3 POI Hello World
在POI包中有如下幾個主要對象和excel的幾個對象對應:
HSSFWorkbook |
Excel 工作簿workbook |
HSSFSheet |
Excel 工作表 sheet |
HSSFRow |
Excel 行 |
HSSFCell |
Excel 單元格 |
利用以上幾個對象,我們簡單創建一個Excel工作表,往里面的C1單元格寫入和讀出“Hello World”:
//創建工作簿 HSSFWorkbook workbook=new HSSFWorkbook(); //新建工作表 HSSFSheet sheet=workbook.createSheet("劉洋"); //創建行,行號作為參數,第一行從0開始計算 HSSFRow row=sheet.createRow(0); //創建單元格,row已經確定行號,列好作為參數,第一列從0開始計算 HSSFCell cell=row.createCell(2); //設置單元格(第一行第三列) cell.setCellValue("hello word"); FileOutputStream outputStream=new FileOutputStream("d:\\工作簿.xls"); workbook.write(outputStream); outputStream.close();
再利用上述幾個對象將“Hello World”讀取出來:
//讀取excel文件 FileInputStream inputStream=new FileInputStream("d:\\工作簿.xls"); //將輸入流轉換為workbook HSSFWorkbook workbook=new HSSFWorkbook(inputStream); //獲取工作表 HSSFSheet sheet=workbook.getSheetAt(0); //獲取行 HSSFRow row=sheet.getRow(0); //獲取單元格(第一行第三列) HSSFCell cell=row.getCell(2); System.out.println("單元格內容為:"+cell.getStringCellValue());
1.4 POI與Excel
通過上門的例子我們知道如下信息:
1、 Excel 的工作簿對應POI的HSSFWorkbook對象;
2、 Excel 的工作表對應POI的HSSFSheet對象;
3、 Excel 的行對應POI的HSSFRow對象;
4、 Excel 的單元格對應POI的HSSFCell對象。
POI 也能對07以后的excel版本進行讀寫,讀寫方法和讀寫03版是一樣的,只是對象名稱變了;原來各對象的開頭字母H變為X,操作方式不變。
1、 Excel 的工作簿對應POI的XSSFWorkbook對象;
2、 Excel 的工作表對應POI的XSSFSheet對象;
3、 Excel 的行對應POI的XSSFRow對象;
4、 Excel 的單元格對應POI的XSSFCell對象。
文件后綴為.xlsx
查看POI api文檔,我們可以查詢POI中所有這些對象的屬性和方法。
從api文檔中我們了解到:
HSSFWorkbook 和 XSSFWorkbook 都實現了Workbook接口;
HSSFSheet 和 XSSFSheet 實現了Sheet接口;
HSSFRow 和 XSSFRow 實現了Row接口;
HSSFCell 和 XSSFCell 實現了Cell接口;
因為這兩類處理對象共同實現了對應的同一接口,屆時將大大方便和簡化了同時處理不同格式的excel文件的編碼工作。如;在處理03和07版本的excel文件時利用統一的接口就可以做到分析兩個版本的excel數據。
POI同時讀入03和07版本的excel。
方法一:判斷文件的名稱后調用對應版本的讀入方法。
方法二:根據不同版本用Workbook接口來讀入文件並統一處理。