JAVA使用easyexcel导出excel

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

首先下载easyexcel的依赖包:


    	com.alibaba
    	easyexcel
    	1.0.4

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 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 clsList=new ArrayList();
		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);
	}
}

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

你可能感兴趣的:(java,excel)