easyExcel导出excel的简单使用

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便

easyexcel 项目git地址为: https://github.com/alibaba/easyexcel
官方使用指南见: https://github.com/alibaba/easyexcel/blob/master/quickstart.md

1:使用:

导入依赖maven依赖:

       <dependency><groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta4</version>
</dependency>

2:模型映射

public class DownMonitorExcelSheet1 extends BaseRowModel {
@ExcelProperty(value = "城市",index = 0)
private String city;
@ExcelProperty(value = "项目名字",index = 1)
private String projectName;
@ExcelProperty(value = "上刊数",index = 2)
private Integer skNum;
@ExcelProperty(value = "下刊数",index = 3)
private Integer xkNum; public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public String getProjectName() {
return projectName;
} public void setProjectName(String projectName) {
this.projectName = projectName;
} public Integer getSkNum() {
return skNum;
} public void setSkNum(Integer skNum) {
this.skNum = skNum;
} public Integer getXkNum() {
return xkNum;
} public void setXkNum(Integer xkNum) {
this.xkNum = xkNum;
}
}

3:service

 @Override
public void excelExportDownInfo(String schemeId, String pushDate, HttpServletResponse response) throws IOException {
String fileName = String.valueOf(System.currentTimeMillis());
response.setContentType("multipart/form-data");
response.setCharacterEncoding("utf-8");
response.addHeader("Content-Disposition", "filename=" + fileName+ ".xlsx");
String sheet1Name = "下刊监测统计";
String sheet2Name = "已下刊";
String sheet3Name = "未下刊";
ExcelWriter writer = new ExcelWriter(response.getOutputStream(), ExcelTypeEnum.XLSX);
//写第一个sheet, sheet1 数据全是List<String> 无模型映射关系
Sheet sheet = new Sheet(1, 0,DownMonitorExcelSheet1.class);
sheet.setSheetName(sheet1Name);
//下刊监测统计
List<DownMonitorExcelSheet1> downMonitorExcelSheet1s = pushMonitorDao.queryDownMonitorExcelSheet1(schemeId, pushDate);
writer.write(downMonitorExcelSheet1s, sheet);

//已下刊 sheet2
// List<DownMonitorExcelSheet2> downMonitorExcelSheet2s = pushMonitorDao.queryDownMonitorExcelSheet2(schemeId, pushDate);
// Sheet sheet2 = new Sheet(2, 0, DownMonitorExcelSheet2.class);
// sheet2.setSheetName(sheet2Name);
// writer.write(downMonitorExcelSheet2s,sheet2);
//未下刊 sheet3
// List<DownMonitorExcelSheet2> downMonitorExcelSheet3 = pushMonitorDao.queryDownMonitorExcelSheet3(schemeId, pushDate);
// Sheet sheet3 = new Sheet(3, 0, DownMonitorExcelSheet2.class);
// sheet3.setSheetName(sheet3Name);
// writer.write(downMonitorExcelSheet3,sheet3);
writer.finish();
}

easyExcel导出excel的简单使用的更多相关文章

  1. ASP.net中导出Excel的简单方法介绍

    下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...

  2. spring mvc项目中导出excel表格简单实现

    查阅了一些资料,才整理出spring mvc 项目导出excel表格的实现,其实很是简单,小计一下,方便以后查阅,也希望帮助有需要的朋友. 1.导入所需要依赖(Jar包).我使用的是maven,所以坐 ...

  3. POI导出excel的简单demo

    目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...

  4. 导出excel的简单方法

    excel的操作,最常用的就是导出和导入,废话不多说上代码. 本例使用NPOI实现的,不喜勿喷哈.... /// <summary> /// 导出Excel /// </summar ...

  5. Qt导出Excel的简单实现

    QAxObject对COM对象进行了封装,QAxObject派生自QAxBase,而后者提供了一组API通过IUnknown(不清楚IUnknown的同学可以去看看COM对象模型)指针直接访问COM对 ...

  6. NPOI 给导出Excel添加简单样式

    需求分析:如下图为我之前导出的Excel数据,没有一点样式,标题行不明显,各个列的数据紧凑,查看数据时得手动拉宽每列,故这次要针对以上问题对它进行优化 结果展示: 代码: /// <summar ...

  7. C#利用NPOI导出Excel类(简单版)

    代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...

  8. 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)

    EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...

  9. java五行代码导出Excel

    目录 先看代码 再看效果 EasyExcel 附: Java按模板导出Excel---基于Aspose实现 Java无模板导出Excel,Apache-POI插件实现 已经写过两种Excel导出插件了 ...

随机推荐

  1. 【工作分解法】IT人,你的工作“轻松”么?

    一.前言 假如读者是一个老板,下面有两位员工,工作难度一样,完成量一样,人品和责任心也一样.一位每天加班加点,废寝忘食的工作:而另外一位每天在座位上喝着咖啡,非常的轻松自如的工作.您会更器重哪一位? ...

  2. HTML导出excel

    在博客园找到的相关问题http://q.cnblogs.com/q/12952  还有相关的回答http://www.cnblogs.com/zhouxin/archive/2009/12/11/16 ...

  3. SqlServer如何给表添加新的字段以及字段注释

    语法: USE 数据库名ALTER TABLE 表名 ADD 字段名  类型  默认值  是否为空;EXEC sp_addextendedproperty N'MS_Description', N'注 ...

  4. DVWA-XSS学习笔记

    DVWA-XSS XSS概念:由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击. XSS类型: 反射型XSS:只是简单地把 ...

  5. Webdriver之API详解(1)

    说明 Webdriver API详解,基于python3,unittest框架,driver版本和浏览器自行选择. 本内容需要对python3的unittest框架有一个简单的了解,这里不再赘述,不了 ...

  6. RocketMQ三主三从二命名服务平滑版本升级实操

    ​本文介绍本次进行RocketMQ平滑过渡升级的实际操作 前文已经介绍过了升级基本原理,主要思想就是先升级NameSrv(命名服务)然后在升级broker节点.broker节点先升级master节点然 ...

  7. python day08

    ascii码转换成字符:ord(str) 字符串转换成ascii:chr(int) 三种字符串 1.普通字符串 --以字符作为输出单位 print(u'abc') 显示给用户看的字符串 2.二进制字符 ...

  8. python day06

    深浅拷贝 1.值拷贝 ls1 = [1,2,3] ls2 = ls1 #ls2直接把栈区里ls1存的地址拿过来,也指向堆区里列表的id #原列表发生ls1改变(不是重新赋值),ls2也跟着发生改变 2 ...

  9. easyui validatebox textbox 取值和赋值

    总结:表单元素使用easyui时,textbox和validatebox设置值和获取值的方式不一样 text-box设置值只能使用id选择器选择表单元素,只能使用textbox("setVa ...

  10. Docker 核心技术之Dockerfile

    Dockerfile 简介 什么是Dockerfile Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义 ...