繼上次使用js前端導出excel之后,還有一個主要大家比較關注的是后臺實現導出excel,因為本人開發使用的java所以這里使用apache的開源項目poi進行后臺excel的導出。
### 本文目錄
-
- [本文目錄](#)
- [poi項目下載及加載](#)
- [extjs前端導出設置](#)
- [extjs后臺對應的解決方案](#)
- [創建excel工作簿](#)
- [創建一個excel頁簽](#)
- [生成excel樣式并初始化](#)
- [產生表格標題行build headers](#)
- [構造數據行build rows](#)
### poi項目下載及加載
POI項目是apache官網的一個開源項目,其主要目的是對microsoft的辦公軟件進行接口封裝,讓用戶可以對其進行編碼方式書寫。
項目開源網址:[Apache POI](http://poi.apache.org/): [http://poi.apache.org/](http://poi.apache.org/)
到寫文章的時候,最新版本是3.1.1,下載bin包 解壓縮后將jar包(以下圖片中的jar包)加入到項目的lib中:

OK。自己測試一下是否正常添加到項目庫中就可以了。
### extjs前端導出設置
在前端extjs的grid中加入底部gridtoolbar內容增加一個導出excel按鈕,增加處理事件,對處理事件關聯到后臺action.
~~~
exportexyjsGrid: function (grid) {
//關聯后臺,傳入需要的參數
}
~~~
### extjs后臺對應的解決方案
在后臺的action處理:
#### 創建excel工作簿
~~~
HSSFWorkbook workbook = new HSSFWorkbook();
~~~
#### 創建一個excel頁簽
~~~
HSSFSheet sheet = workbook.createSheet("頁簽標題");
~~~
#### 生成excel樣式并初始化
~~~
HSSFCellStyle style = workbook.createCellStyle();
~~~
#### 產生表格標題行(build headers)
~~~
HSSFRow row = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
~~~
#### 構造數據行(build rows)
跟標題行一樣 遍歷前臺傳入的grid參數 找到store 過濾參數條件 遍歷插入excel數據行并填充數據即可。
本文主要使用的markdown編輯器功能:
1. 代碼高亮
2. 圖片上傳
3. 標題目錄