easyExcel导出excel的简单使用
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的简单使用的更多相关文章
- ASP.net中导出Excel的简单方法介绍
下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...
- spring mvc项目中导出excel表格简单实现
查阅了一些资料,才整理出spring mvc 项目导出excel表格的实现,其实很是简单,小计一下,方便以后查阅,也希望帮助有需要的朋友. 1.导入所需要依赖(Jar包).我使用的是maven,所以坐 ...
- POI导出excel的简单demo
目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...
- 导出excel的简单方法
excel的操作,最常用的就是导出和导入,废话不多说上代码. 本例使用NPOI实现的,不喜勿喷哈.... /// <summary> /// 导出Excel /// </summar ...
- Qt导出Excel的简单实现
QAxObject对COM对象进行了封装,QAxObject派生自QAxBase,而后者提供了一组API通过IUnknown(不清楚IUnknown的同学可以去看看COM对象模型)指针直接访问COM对 ...
- NPOI 给导出Excel添加简单样式
需求分析:如下图为我之前导出的Excel数据,没有一点样式,标题行不明显,各个列的数据紧凑,查看数据时得手动拉宽每列,故这次要针对以上问题对它进行优化 结果展示: 代码: /// <summar ...
- C#利用NPOI导出Excel类(简单版)
代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...
- 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)
EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...
- java五行代码导出Excel
目录 先看代码 再看效果 EasyExcel 附: Java按模板导出Excel---基于Aspose实现 Java无模板导出Excel,Apache-POI插件实现 已经写过两种Excel导出插件了 ...
随机推荐
- 扫码下单支持同桌单人点餐FAQ
一.使用场景 满足较多商户希望同一桌台,各自点各自的菜品的业态场景(例如杭味面馆,黄焖鸡米饭店,面馆等大多数轻快餐店) 二.配置步骤及注意事项 管理员后台配置--配置管理--店铺配置--扫码点餐tab ...
- Java Web相关问题
关于这两天主要问题的解答: (1) 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接.错误: java.lang.RuntimeException: Could no ...
- AngularJS学习之旅—AngularJS 模块(十五)
一.AngularJS 模块 模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. 1.创建模块 通过 AngularJS 的 angular ...
- Host Only、NAT和Bridge三种网络连接
Host Only.NAT和Bridge三种网络连接 在安装好了Linux镜像之后,如何连接物理机和虚拟机呢?这就需要网络连接,网络连接有三种:HostOnly.NAT.Bridge,它们都可用于Gu ...
- redis编译 报告错误 jemalloc/jemalloc.h:没有那个文件或目录 解决.
问题原因:没找到jemalloc头文件. 百度谷歌半天没找到有效的下载地址. github中有 到github下载.jemalloc https://github.com/jemalloc/jemal ...
- 012_python在shell下单行执行多行代码
一.有时候只是简单的获取下时间戳,不想在python解释器的交互模式下再去执行python代码,如何实现呢? 以循环输出多行为例: (1)第一种方式: python -c "exec(\&q ...
- servlet运行机制、Request内置对象和服务器端跳转
servlet运行机制: 当发送一个请求到服务器的时候,容器(Tomcat)会判断该路径属于哪一个 Servlet 进行处理,Servlet 有一个抽象父类“HttpServlet”,这个类是一个模板 ...
- Linux安装Sqlite
下载SQLite源代码sqlite-3.6.23.1.tar.gz 复制sqlite-3.6.23.1.tar.gz到linux上的/usr/src目录 解压源代码 tar -xvzf sqlite- ...
- Codeforces Round #545 (Div. 2)-Camp Schedule
题目要求,给定一个s序列,一个p序列,问能不能对s做相应的调整,使得s序列中,有尽可能多的p子串(可以重复) 最开始我拿到这个题目,也是一点头绪都没有,如何做调整呢? 首先考虑如何会有尽可能多的子串, ...
- vue路由传对象刷新会报错,数据丢失,用json字符串解决
变成json字符串,且加密 this.$router.push({name: response.body.PowerList[0].opPowerurl ,query :{ all: encodeUR ...