一、簡介
1.1 概述
XXL-EXCEL 是一個靈活的Java對象和Excel文檔相互轉換的工具。
一行代碼完成Java對象和Excel之間的轉換。
1.2 特性
- 1、Excel導出:支持Java對象裝換爲Excel,並且支持File、字節數組、Workbook等多種導出方式;
- 2、Excel導入:支持Excel轉換爲Java對象,並且支持File、InputStream、文件路徑、Workbook等多種導入方式;
- 3、全基礎數據類型支持:Excel的映射Java對象支持設置任意基礎數據類型,將會自動完整值注入;
- 4、Field寬度自適應;
- 5、多Sheet導出:導出Excel時支持設置多張sheet;
- 6、多Sheet導入:導入Excel時支持設置多張sheet,通過 "@ExcelSheet.name" 註解匹配Sheet;
1.4 下載
文檔地址
源碼倉庫地址
源碼倉庫地址 | Release Download |
---|---|
https://github.com/xuxueli/xxl-excel | Download |
https://gitee.com/xuxueli0323/xxl-excel | Download |
技術交流
1.5 環境
- JDK:1.7+
二、快速入門
2.1 引入maven依賴
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-excel-core/ -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-excel</artifactId>
<version>1.0.0</version>
</dependency>
2.2 定義Java對象
@ExcelSheet(name = "商戶列表", headColor = HSSFColor.HSSFColorPredefined.LIGHT_GREEN)
public class ShopDTO {
@ExcelField(name = "商戶ID")
private int shopId;
@ExcelField(name = "商戶名稱")
private String shopName;
public ShopDTO() {
}
public ShopDTO(int shopId, String shopName) {
this.shopId = shopId;
this.shopName = shopName;
}
public int getShopId() {
return shopId;
}
public void setShopId(int shopId) {
this.shopId = shopId;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
}
2.3 Excel導出:Object 轉換爲 Excel
// 參考測試代碼:com.xuxueli.poi.excel.test.Test
/**
* Excel導出:Object 轉換爲 Excel
*/
ExcelExportUtil.exportToFile(filePath, shopDTOList);
2.4 Excel導入:Excel 轉換爲 Object
// 參考測試代碼:com.xuxueli.poi.excel.test.Test
/**
* Excel導入:Excel 轉換爲 Object
*/
List<Object> list = ExcelImportUtil.importExcel(filePath, ShopDTO.class);
三、總體設計
3.1 功能定位
XXL-EXCEL 是在 Java 對象和 Excel 文檔之間進行轉換的迅速而靈活的工具。
藉助 XXL-EXCEL,一個Java類對象可以完整描述一張Excel表,XXL-EXCEL 做的事情就是把Java對象映射成Excel文件,同時保證性能和穩定。
3.2 Java 對象 和 Excel映射關係
-- | Excel | Java 對象 |
---|---|---|
表 | Sheet | Java對象列表 |
表頭 | Sheet首行 | Java對象Field |
數據 | Sheet一行記錄 | Java對象列表中一個元素 |
3.3 核心註解:ExcelSheet
功能:描述Sheet信息,註解添加在待轉換爲Excel的Java對象類上,可選屬性如下。
ExcelSheet | 說明 |
---|---|
name | 表/Sheet名稱 |
headColor | 表頭/Sheet首行的顏色 |
3.4 核心註解:ExcelField
功能:描述Sheet的列信息,註解添加在待轉換爲Excel的Java對象類的字段上,可選屬性如下。
ExcelField | 說明 |
---|---|
name | 屬性/列名稱 |
四、版本更新日誌
版本 V1.0.0,新特性[2017-09-13]
- 1、Excel導出:支持Java對象裝換爲Excel,並且支持File、字節數組、Workbook等多種導出方式;
- 2、Excel導入:支持Excel轉換爲Java對象,並且支持File、InputStream、文件路徑、Workbook等多種導入方式;
版本 V1.1.0,新特性[2017-12-14]
- 1、字段支持Date類型。至此,已經支持全部基礎數據類型。
- 2、Java轉換Excel時,字段類型改爲從Field上讀取,避免Value爲空時空指針問題。
- 3、升級POI至3.17版本;
- 4、支持設置Field寬度;如果不指定列寬,將會自適應調整寬度;
- 5、多Sheet導出:導出Excel時支持設置多張sheet;
- 6、多Sheet導入:導入Excel時支持設置多張sheet,通過 "@ExcelSheet.name" 註解匹配Sheet;
版本 V1.1.1,新特性[迭代中]
- 1、支持設置Field水平位置,如居中、居左;
- 2、底層API優化,預約多Sheet操作支持;
- 3、空Cell導入拋錯問題修復;
- 4、Cell數據類型識別優化,全類型支持;
- 5、導入時支持空Excel;導出時限制非空,否則無法進行類型推導。
TODO LIST
- 1、單個Excel多Sheet導出導出;
- 2、列合併導入導出;
- 3、行合併導入導出;
- 4、HSSFWorkbook=2003/xls、XSSFWorkbook=2007/xlsx 兼容支持;
- 5、流式導入:多批次導入數據;
- 7、流式導出:分頁方式導出數據;
- 6、單錶行數限制:2003/xls=65536,2007/xlsx=1048576;行數限制內進行性能測試和優化;
- 8、排序的字段,對時間等其他類型的處理。
- 9、Java已經支持全基礎數據類型導入導出,但是Excel僅支持STRING類型CELL,需要字段屬性支持定義CELL類型;
- 10、同一個單元格,橫向、豎向拆分多個單元格;List屬性;
- 11、Excel導入多Sheet支持;
- 12、CellType導入、導出全類型支持,如Date等;
五、其他
5.1 項目貢獻
歡迎參與項目貢獻!比如提交PR修復一個bug,或者新建 Issue 討論新特性或者變更。
5.2 用戶接入登記
更多接入的公司,歡迎在 登記地址 登記,登記僅僅爲了產品推廣。
5.3 開源協議和版權
產品開源免費,並且將持續提供免費的社區技術支持。個人或企業內部可自由的接入和使用。
- Licensed under the GNU General Public License (GPL) v3.
- Copyright (c) 2015-present, xuxueli.