Java對象和Excel轉換工具XXL-EXCEL

《Java對象和Excel轉換工具XXL-EXCEL》

Maven Central
GitHub release
License
donate

1、簡介

1.1 概述

XXL-EXCEL 是一個靈活的Java對象和Excel文檔相互轉換的工具。html

一行代碼完成Java對象和Excel之間的轉換。git

1.2 特性

  • 一、Excel導出:支持Java對象裝換爲Excel,而且支持File、字節數組、Workbook等多種導出方式;
  • 二、Excel導入:支持Excel轉換爲Java對象,而且支持File、InputStream、文件路徑、Workbook等多種導入方式;
  • 三、全基礎數據類型支持:Excel的映射Java對象支持設置任意基礎數據類型,將會自動完整值注入;
  • 四、Field寬度自適應;
  • 五、多Sheet導出:導出Excel時支持設置多張sheet;
  • 六、多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、快速入門

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(ShopDTO.class, filePath);

3、整體設計

3.1 功能定位

XXL-EXCEL 是在 Java 對象和 Excel 文檔之間進行轉換的迅速而靈活的工具。github

藉助 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對象類上,可選屬性以下。app

ExcelSheet 說明
name 表/Sheet名稱
headColor 表頭/Sheet首行的顏色

3.4 核心註解:ExcelField

功能:描述Sheet的列信息,註解添加在待轉換爲Excel的Java對象類的字段上,可選屬性以下。maven

ExcelField 說明
name 屬性/列名稱

4、版本更新日誌

版本 V1.0.0,新特性[2017-09-13]

  • 一、Excel導出:支持Java對象裝換爲Excel,而且支持File、字節數組、Workbook等多種導出方式;
  • 二、Excel導入:支持Excel轉換爲Java對象,而且支持File、InputStream、文件路徑、Workbook等多種導入方式;

版本 V1.1.0,新特性[2017-12-14]

  • 一、字段支持Date類型。至此,已經支持所有基礎數據類型。
  • 二、Java轉換Excel時,字段類型改成從Field上讀取,避免Value爲空時空指針問題。
  • 三、升級POI至3.17版本;
  • 四、支持設置Field寬度;若是不指定列寬,將會自適應調整寬度;
  • 五、多Sheet導出:導出Excel時支持設置多張sheet;
  • 六、多Sheet導入:導入Excel時支持設置多張sheet,經過 "@ExcelSheet.name" 註解匹配Sheet;

版本 V1.1.1,新特性[迭代中]

TODO LIST

  • 一、單個Excel多Sheet導出導出;
  • 二、列合併導入導出;
  • 三、行合併導入導出;
  • 四、HSSFWorkbook=2003/xls、XSSFWorkbook=2007/xlsx 兼容支持;
  • 五、流式導入:多批次導入數據;
  • 七、流式導出:分頁方式導出數據;
  • 六、單錶行數限制:2003/xls=65536,2007/xlsx=1048576;行數限制內進行性能測試和優化;
  • 八、排序的字段,對時間等其餘類型的處理。
  • 九、Java已經支持全基礎數據類型導入導出,可是Excel僅支持STRING類型CELL,須要字段屬性支持定義CELL類型;
  • 十、支持空數據,導入導出。
  • 十一、同一個單元格,橫向、豎向拆分多個單元格;List屬性;
  • 十二、Excel導入多Sheet支持;

5、其餘

5.1 項目貢獻

歡迎參與項目貢獻!好比提交PR修復一個bug,或者新建 Issue 討論新特性或者變動。工具

5.2 用戶接入登記

更多接入的公司,歡迎在 登記地址 登記,登記僅僅爲了產品推廣。性能

5.3 開源協議和版權

產品開源免費,而且將持續提供免費的社區技術支持。我的或企業內部可自由的接入和使用。測試

  • Licensed under the GNU General Public License (GPL) v3.
  • Copyright (c) 2015-present, xuxueli.

捐贈

不管金額多少都足夠表達您這份心意,很是感謝 :) 前往捐贈優化

相關文章
相關標籤/搜索