+EasyExcel学习

一、引入
       在一个项目系统中,只要运行了,就会产生很多数据,一般会采用分页显示,但是为了方便浏览数据,一般都会做一个功能,导出成excel,而为了添加数据,也会做一个导入excel功能,进行批量导入。而现在在市场有很多这方面的技术,如Apache poi、jxl。但是这两种技术都存在一个问题,就是非常的耗内存,虽然poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但poi还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
       而基于这一点,阿里巴巴开发出了EasyExcel,那么什么是EasyExcel?
二、EasyExcel简介
       EasyExcel的是由阿里巴巴团队开发的快速、简单避免OOM的java处理Excel工具。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便。github地址:https://github.com/alibaba/ea...,文档地址:https://alibaba-easyexcel.git... 。
三、EasyExcel之导入,导出
创建一个maven工程,导入依赖:

[XML] _纯文本查看_ _复制代码_

?

<`dependency`>

<`groupId>com.alibaba</groupId`>

<`artifactId>easyexcel</artifactId`>

<`version>1.1.2-beat1</version`>

</`dependency`>

<!--非必要包,可以简略掉get,set方法-->

<`dependency`>

<`groupId>org.projectlombok</groupId`>

<`artifactId>lombok</artifactId`>

<`version>1.18.2</version`>

</`dependency`>

<!--测试-->

<`dependency`>

<`groupId>junit</groupId`>

<`artifactId>junit</artifactId`>

<`version>4.12</version`>

<`scope>test</scope`>

</`dependency`>

读取的文件如下:

1.读取指定文件
  

[Java] _纯文本查看_ _复制代码_

?

/**

*读取指定文件

*/

@Test

public void read(){

/*文件路径*/

String filePath = "D:\\user.xlsx";

try(InputStream fileStream=new FileInputStream(filePath) ) {

/*Sheet:表格对象,第一个参数代表表格的索引,即第几个表格,第二个参数是从第几行开始,默认第一行是0*/

Sheet sheet=`new Sheet(1,0);`

List<Object> read = EasyExcelFactory.read(fileStream, sheet);

for (Object object :

read) {

System.out.println(object);

}

} catch (Exception e) {

e.printStackTrace();

}

}

输出如下:

2.生成excel

[Java] _纯文本查看_ _复制代码_

?

@Test

public void write() throws FileNotFoundException {

// 生成EXCEL并指定输出路径

OutputStream out = new FileOutputStream(`"D:\out.xlsx"`);

ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);

// 设置,第一个参数是第几个表格,第二个参数是从第几行开始

Sheet sheet = new Sheet(`1,` `0);`

//设置表格名

sheet.setSheetName(`"sheet1"`);

// 设置标题

Table table = new Table(`1`);

List<List<String>> titles = new ArrayList<List<String>>();

titles.add(Arrays.asList(`"用户名"`));

titles.add(Arrays.asList(`"年龄"`));

titles.add(Arrays.asList(`"生日"`));

titles.add(Arrays.asList(`"地址"`));

table.setHead(titles);

// 查询数据导出即可 比如说一次性总共查询出100条数据

List<List<String>> userList = new ArrayList<>();

for (`int i = 0; i <` `100; i++) {`

userList.add(Arrays.asList( "小明" + i, String.valueOf(i), new Date().toString(),`"幸福路"+i+"号"`));

}

writer.write0(userList, sheet, table);

writer.finish();

}

生成的表格:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值