jxls2.3-簡明教程 excel
http://www.cnblogs.com/klguang/p/6425422.html
http://jxls.sourceforge.net/
jxls是一個簡單的、輕量級的excel匯出庫,使用特定的標記在excel模板檔案中來定義輸出格式和佈局。java中成熟的excel匯出工具有pol、jxl,但他們都是使用java程式碼的方式來匯出excel,編碼效率很低且不方便維護。
另外,jxls2.3的執行效率也相當不錯,經過測試,在禁用日誌輸出的情況下,匯出excel單表66535條記錄僅僅3000毫秒,與poi幾乎沒什麼大的差距。
demo工程原始碼下載:http://files.cnblogs.com/files/klguang/jxlsdemo.zip
excel模板示例:
Excel模板標記在jxls中的作用分為三部分:
- bean屬性標記
- XLS Area定義標記
- XLS Command表示標記
bean屬性標記
jxls使用 Apache JEXL表示式語言來解析定義在excel模板中的表示式。JEXL與JSTL相似,並對JSTL進行了擴充套件。eg:
${department.chief.age} //屬性可以是無限深度
${utils:dateFmt(date,"yyyy-MM-dd")} //自定義工具函式
XLS Area定義標記
XLS Area 是JxlsPlus中的一個重要概念,它代表excel模板中需要被解析的矩形區域,由A1到最後一個單元格表示,有利於加快解析速度。
XLS Area 使用excel註釋標註表示,它需要被定義在excel 模板的第一個單元格(A1):
jx:area(lastCell = "<AREA_LAST_CELL>")
這個標記定義了excel模板需要被解析的矩形區域為:A1到<AREA_LAST_CELL>。
XLS Command表示標記
XLS Command 使用excel註釋標註表示,命令格式如下:
jx:<command_name>(attr1='val1' attr2='val2' ... attrN='valN' lastCell=<last_cell> areas=["<command_area1>", "<command_area2", ... "<command_areaN>"])
<command_name> 是庫自帶的命名或是使用者自定義並註冊到XlsCommentAreaBuilder的命令。
each 命令是最常用的XLS命令,形如:
jx:each(items="employees" var="employee" lastCell="D4")
each 可以有如下一些屬性:
- items 上下文中集合的變數名;
- var 在遍歷集合的時候每一條記錄的變數名;
- area 該XLS Command的解析區域;
- direction 資料在excel中填充的方向,預設(DOWN)向下;
- select 其值為一個表示式,用來過濾資料。
jexl自定義工具函式
如果你需要自定jexl來處理資料,你可以從Transformer物件獲取JexlEngine引用,並對其配置。
下面的例子實現了將一個自定義jexl函式註冊到utils名稱空間下:
1 2 3 4 5 6 |
|
demo
此demo是將簡單的員工資訊匯出excel,demo工程原始碼下載:http://files.cnblogs.com/files/klguang/jxlsdemo.zip
工程目錄:
Employee.java
1 2 3 4 5 6 7 8 |
|
建立excel模板:
工具類JxlsUtils.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
入口ObjectCollectionDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
生成效果:
轉載於:https://my.oschina.net/huqiji/blog/1806444