POI入門及簡單應用
由於工作的需要,學習了一下POI, Apache POI是Apache軟體基金會的開放原始碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。
那麼我們怎麼使用POI呢?POI的使用其實非常簡單,都不用我們安裝,我們只需要用它的幾個jar包就可以了。接下來我就一步一步圖文說一下如何使用POI。
第一步:下載壓縮包
到官網http://poi.apache.org/download.html#archive下載POI的壓縮包,如下圖所示,poi-bin-3.15-20160924.zip是Windows系統所用到的包,poi-bin-3.15-20160924.tar.gz是Linux系統所需要的包。我們下載Windows系統下所需要的poi-bin-3.15-20160924.zip。
第二步:解壓並檢視都有哪些Jar包
2.1 我們解壓第一步下載的壓縮包,解壓後是名為poi-3.15的資料夾。
2.2 我們進入到poi-3.15資料夾下,我們可以看到有lib、ooxml-lib資料夾(這兩個資料夾裡面也是jar包)以及以poi開頭的一些jar包,我們需要所有的jar包。
第三步:工程中匯入jar包
3.1 我用的是Java EE,Java EE使用外部包的話,最好使用User Library的方式,因為直接建lib包並匯入jar包幷包含到專案中的話,jar包的排版特別難看。那麼怎麼新建一個User Library呢,我們點"Window"然後點"Preferences",如下圖所示。
點選上圖的"Preferences"之後,會進入到如下圖所示的介面,我們在搜尋框中輸入"User Libraries"就會搜到在Java的Build Path下面有User Libraries,我們點選它,就會看到圖右側的內容(當然,剛開始是沒有poiJar和hadoopJar的,這是我建好的),我們點選"New...",然後輸入要新建的User Library的名字,我起的名字是poiJar。建好了Library之後就是向裡面新增jar包,我們點選"Add External JARs..."按鈕,在彈出的對話方塊中選擇我們在第二步中提到的lib、ooxml-lib資料夾下的所有jar包,以及與lib資料夾同級的所有以poi開頭的jar包,都新增到poiJar當中去。
3.2 弄好了poiJar之後,我們就讓工程引用一下該poiJar,方法是我們在工程上右鍵--------->點選"Build Path"-------->點選"Configure Build Path....",如下圖所示。
點選上圖的“Configure Build Path...."之後,我們會看到如下圖所示的介面,剛開始只有JRE System Library,如下圖所示。我們要新增Library,點選"Add Library..."
我們會看到如下圖所示,我們點選”User Library“。然後點選“Next”
接下來我們會看到如下圖所示的介面,我們勾選上poiJar,然後點選"Finish"
接下來我們會看到如下圖所示的介面,我們可以看到poiJar下面有很多jar包了。我們點選"OK"。
點選"OK"之後,我們再看看我們的工程下面就多了一個外部Library,poiJar下面是我們所要用到的所有POI的jar包。
第四步:使用POI
導好了jar包,接下來我們便用一個例子來測試一下POI是否可用,我新建了一個叫TestPOI的類,在該類中使用我們POI的功能,向D盤根目錄生成一個Excel檔案。
package com.test; import java.io.FileOutputStream; import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class TestPOI {
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
//建立工作簿---->XSSF代表10版的Excel(HSSF是03版的Excel)
XSSFWorkbook wb = new XSSFWorkbook();
//工作表
XSSFSheet sheet = wb.createSheet("會員列表");
//標頭行,代表第一行
XSSFRow header=sheet.createRow(0);
//建立單元格,0代表第一行第一列
XSSFCell cell0=header.createCell(0);
cell0.setCellValue("會員級別");
header.createCell(1).setCellValue("會員編號");
header.createCell(2).setCellValue("會員姓名");
header.createCell(3).setCellValue("推薦人編號");
header.createCell(4).setCellValue("負責人編號");
header.createCell(5).setCellValue("地址編號");
header.createCell(6).setCellValue("註冊時間");
//設定列的寬度
//getPhysicalNumberOfCells()代表這行有多少包含資料的列
for(int i=0;i<header.getPhysicalNumberOfCells();i++){
//POI設定列寬度時比較特殊,它的基本單位是1/255個字元大小,
//因此我們要想讓列能夠盛的下20個字元的話,就需要用255*20
sheet.setColumnWidth(i, 255*20);
}
//設定行高,行高的單位就是畫素,因此30就是30畫素的意思
header.setHeightInPoints(30);
//上面設定好了內容,我們當然是要輸出到某個檔案的,輸出就需要有輸出流
FileOutputStream fos= new FileOutputStream("d:/2010.xlsx");
//向指定檔案寫入內容
wb.write(fos);
fos.close();
}
}
執行上面的程式,我們再到D盤根目錄下看一下是否有我們要生成的2010.xlsx檔案,我們發現確實已經正常生成,如下圖所示。
我們開啟2010.xlsx檔案,看生成的內容是否正確,發現生成的內容包括行高都符合我們設定的值,完全沒問題!
好了,以上便是POI的簡單應用了。