文档章节

Java对象和Excel转换工具XXL-EXCEL

许雪里
 许雪里
发布于 2017/09/13 12:11
字数 1370
阅读 741
收藏 4

《Java对象和Excel转换工具XXL-EXCEL》

Maven Central GitHub release License donate

一、简介

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,新特性[2018-10-24]

  • 1、支持设置Field水平位置,如居中、居左;
  • 2、底层API优化,预约多Sheet操作支持;
  • 3、空Cell导入抛错问题修复;
  • 4、Cell数据类型识别优化,全类型支持;
  • 5、导入时支持空Excel;导出时限制非空,否则无法进行类型推导。

版本 v1.1.2,新特性[迭代中]

  • 1、[ING] HSSFWorkbook=2003/xls、XSSFWorkbook=2007/xlsx 兼容支持;

TODO LIST

  • 1、单个Excel多Sheet导出导出;
  • 2、列合并导入导出;
  • 3、行合并导入导出;
  • 4、同一个单元格,横向、竖向拆分多个单元格;List属性;
  • 5、流式导入:多批次导入数据;
  • 7、流式导出:分页方式导出数据;
  • 6、单表行数限制:2003/xls=65536,2007/xlsx=1048576;行数限制内进行性能测试和优化;
  • 8、排序的字段,对时间等其他类型的处理。
  • 9、Java已经支持全基础数据类型导入导出,但是Excel仅支持STRING类型CELL,需要字段属性支持定义CELL类型;
  • 10、Excel导入多Sheet支持;
  • 11、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.

捐赠

无论金额多少都足够表达您这份心意,非常感谢 :) 前往捐赠

© 著作权归作者所有

许雪里

许雪里

粉丝 782
博文 19
码字总数 86332
作品 15
长宁
后端工程师
私信 提问
XXL-EXCEL v1.1.0 发布,Java 对象和 Excel 转换工具

XXL-EXCEL v1.1.0 发布,新特性如下: 1、字段支持Date类型。至此,已经支持全部基础数据类型。 2、Java转换Excel时,字段类型改为从Field上读取,避免Value为空时空指针问题。 3、升级POI至...

许雪里
2017/12/15
741
5
XXL-EXCEL v1.1.1 发布,Java 对象和 Excel 转换工具

v1.1.1 新特性 1、支持设置Field水平位置,如居中、居左; 2、底层API优化,预约多Sheet操作支持; 3、空Cell导入抛错问题修复; 4、Cell数据类型识别优化,全类型支持; 5、导入时支持空Exc...

许雪里
2018/10/24
1K
9
XXL-EXCEL v1.0.0,Java 对象和 Excel 转换工具

XXL-EXCEL v1.0.0 发布,特性如下: Excel导出:支持Java对象装换为Excel,并且支持File、字节数组、Workbook等多种导出方式; Excel导入:支持Excel转换为Java对象,并且支持File、InputSt...

许雪里
2017/09/12
3.2K
26
精简的 Excel 导入导出工具 - java-excel-utils

是JAVA操作 Excel 导入导出的工具类,目的是简化逻辑操作、可拓展 Excel 导入导出配置。 使用场景: 数据导出Excel表格是系统经常基本的功能之一,而导出Excel数据又是多种多样,如:多表格数...

czydub
2018/12/07
6.7K
17
spreadsheet-mapper 1.0.6 发布

项目简介 用excel导入、导出数据是企业软件里很常见的需求,但是要实现好导入、导出并非易事,主要原因在于excel导入或导出并非简单的对数据库表的操作,往往牵涉到校验、转换等工作。 本项目...

jarchan
2017/04/08
1K
10

没有更多内容

加载失败,请刷新页面

加载更多

PHP如何上传文件和下载,你学会了吗?

# 第1章 文件上传 ## 1.1 客户端上传设置 在 B/S 程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。 网络上常见的支持文...

汤清丽
28分钟前
4
0
.WebApplicationException: null

今天启动eureka server 集群后,启动提供者。出现报错: WebApplicationException: null Cannot execute request on any known server was unable to refresh its cache! status = Retry lim......

颖辉小居
43分钟前
4
0
Jenkins admin 密码忘记解决

一、admin密码未更改情况 1.进入\Jenkins\secrets目录,打开initialAdminPassword文件,复制密码; find / -name initialAdminPassword [root@jenkins jenkins]# cat /var/lib/jenkins/secre......

SuShine
今天
6
0
LiveData原理分析

LiveData原理分析 1 LiveData简介 大部分Android应用会从网络或SQLite数据库存取数据,并根据数据更新界面。为了避免ANR,主线程中不能存取数据。而后台线程中无法更新界面。通常的做法是让后...

tommwq
今天
5
0
Java描述设计模式(20):命令模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景 1、场景描述 智能电脑的品牌越来越多,由此诞生了一款电脑控制的APP,万能遥控器,用户在使用遥控器的时候,可以切换为自家电视的品...

知了一笑
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部