一個excel文件就是一個工做簿workbook,一個工做簿中能夠建立多張工做表sheet,而一個工做表中包含多個單元格Cell,這些單元格都是由列(Column)行(Row)組成,列用大寫英文字母表示,從A開始到Z共26列,而後再從AA到AZ又26列,再從BA到BZ再26列以此類推。行則使用數字表示,例如;A3 表示第三行第一列,E5表示第五行第五列。apache
JAVA中操做Excel的有兩種比較主流的工具包: JXL 和 POI 。jxl 只能操做Excel 95, 97, 2000也即以.xls爲後綴的excel。而poi能夠操做Excel 95及之後的版本,便可操做後綴爲 .xls 和 .xlsx兩種格式的excel。api
POI全稱 Poor Obfuscation Implementation,直譯爲「可憐的模糊實現」,利用POI接口能夠經過JAVA操做Microsoft office 套件工具的讀寫功能。官網:http://poi.apache.org ,POI支持office的全部版本,因此選擇POI來說解。工具
在POI包中有以下幾個主要對象和excel的幾個對象對應:編碼
HSSFWorkbookspa |
Excel 工做簿workbookexcel |
HSSFSheetcode |
Excel 工做表 sheet對象 |
HSSFRowblog |
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());
經過上門的例子咱們知道以下信息:
一、 Excel 的工做簿對應POI的HSSFWorkbook對象;
二、 Excel 的工做表對應POI的HSSFSheet對象;
三、 Excel 的行對應POI的HSSFRow對象;
四、 Excel 的單元格對應POI的HSSFCell對象。
POI 也能對07之後的excel版本進行讀寫,讀寫方法和讀寫03版是同樣的,只是對象名稱變了;原來各對象的開頭字母H變爲X,操做方式不變。
一、 Excel 的工做簿對應POI的XSSFWorkbook對象;
二、 Excel 的工做表對應POI的XSSFSheet對象;
三、 Excel 的行對應POI的XSSFRow對象;
四、 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接口來讀入文件並統一處理。