JAVA使用easyexcel导出excel

2 篇文章 0 订阅

导出excel的工具有很多,如poi,jxl等但是他们导出excel会比较的消耗内存,一旦数据大起来可能造成内存溢出,而easyexcel很好的避免了内存溢出的问题。

首先下载easyexcel的依赖包:

<dependency>
    	<groupId>com.alibaba</groupId>
    	<artifactId>easyexcel</artifactId>
    	<version>1.0.4</version>
</dependency>

java模型映射(省略了get和set方法):

public class ClsModal extends BaseRowModel{
	
	@ExcelProperty(value="班级编号",index=0)
	private Integer cid;
	
	@ExcelProperty(value="班级名称",index=1)
	private String cname;

导出类:

package exportExcel;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;

public class ExportExcel {

	public void export(List<ClsModal> clsList) {
		try(OutputStream out=new FileOutputStream("C:\\Users\\hc\\Desktop\\exportCls.xlsx")) {
			ExcelWriter writer=new ExcelWriter(out,ExcelTypeEnum.XLSX);
			
			if(!clsList.isEmpty()) {
				/**
				  * 1表示第1个工作表,
				  * 0表示从第几行开始读取数据,最小值为0
				  * clsList.get(0).getClass()表示要导出的实体类 
				  * /
				Sheet sheet=new Sheet(1,0,clsList.get(0).getClass());
				
				sheet.setSheetName("导出班级测试");
				writer.write(clsList, sheet);
			}
			writer.finish();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

测试类:

package exportExcel;

import java.util.ArrayList;
import java.util.List;

public class ExportTest {
	public static void main(String[] args) {
		//准备数据
		List<ClsModal> clsList=new ArrayList<ClsModal>();
		for(int i=0;i<3;i++) {
			ClsModal cls=new ClsModal();
			cls.setCid(i);
			cls.setCname("java"+i);
			clsList.add(cls);
		}
		
		new ExportExcel().export(clsList);
	}
}

测试结果:
在这里插入图片描述
如果是前后端分离,则只需要使用HttpServletResponse获得OutputStream流,然后再形成excel表,将其写入到输出流中,然后响应给前端即可。但注意要将响应的头设置成“Content-Disposition”。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值