浙江省快乐12走势图表

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2511|回复: 20
打印 上一主题 下一主题

浙江省11选五走势图: java百万级别excel导出(easyExcel,阿里出品,超赞)

[复制链接]

浙江省快乐12走势图表 www.at929.com 14

主题

55

帖子

32

金币

连长

Rank: 7Rank: 7Rank: 7

积分
159

新兵

跳转到指定楼层
楼主
发表于 2018-11-6 00:46:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




1.为什么需要excel导出?

导出功能在各个领域都被广泛的运用,当用户想把数据下载下来的时候,此时excel是一个不错的选择。

2.如何选择合适的excel导出?

选择的问题一般都比较纠结,选择了一个版本之后发现另外一个版本更适合,所以我们就应该选择一些我们相对较熟悉或者合适自己开发习惯的就行,没有需要纠结到底选择那个版本。

3.easyexcel工具

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模式。在上层做了模型转换的封装,让使用者更加简单便利(此处引用gitHub)

好了,空话不多说,直接进入主题,如何运用easyExcel进行excel处处。

第一:引入jar包.

gradle:

compile("com.alibaba:easyexcel:1.0.4")

maven:

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>easyexcel</artifactId>

<version>1.0.4</version>

</dependency>

核心代码:ExcelUtils.java

package com.dctp.cloud.boss.util;

import com.alibaba.excel.ExcelWriter;

import com.alibaba.excel.metadata.BaseRowModel;

import com.alibaba.excel.metadata.Sheet;

import com.alibaba.excel.support.ExcelTypeEnum;

import com.dctp.cloud.bo.BoUtil;

import com.dctp.cloud.boss.bo.OTCTradeBo;

import org.apache.poi.ss.formula.functions.T;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.net.URLEncoder;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.List;

/**

* @Description: excel操作工具类

* @Author: yaomaoyang

* @CreateDate: 2018/9/29 18:05

* @UpdateUser: yaomaoyang

* @UpdateDate: 2018/9/29 18:05

* @UpdateRemark: 修改内容

* @Version: 1.0

*/

public class ExcelUtils {

/**

* 导出

* @param list

* @param response

* @param clazz

* @return

*/

public static BoUtil export(List<? extends BaseRowModel> list, HttpServletResponse response, Class<? extends BaseRowModel> clazz) {

BoUtil boUtil = BoUtil.getDefaultFalseBo();

ServletOutputStream out = null;

try {

out = response.getOutputStream();

} catch (IOException e) {

e.printStackTrace();

}

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

try {

boUtil = BoUtil.getDefaultTrueBo();

String fileName = new String(

(new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(), "UTF-8");

Sheet sheet2 = new Sheet(2, 3,clazz, "sheet", null);

writer.write(list, sheet2);

//response.setContentType("multipart/form-data");

response.setCharacterEncoding("utf-8");

response.setContentType("application/vnd.ms-excel");

response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8"));

//response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

out.flush();

boUtil.setMsg("导出成功");

} catch (Exception e) {

e.printStackTrace();

boUtil.setMsg("导出失败");

return boUtil;

} finally {

writer.finish();

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

return boUtil;

}

}

}

AdvertisingIndentBo.java

package com.dctp.cloud.boss.bo;

import java.math.BigDecimal;

import com.alibaba.excel.annotation.ExcelProperty;

import com.alibaba.excel.metadata.BaseRowModel;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import lombok.experimental.Builder;

@SuppressWarnings("deprecation")

@Data

@Builder

@NoArgsConstructor

@AllArgsConstructor

public class AdvertisingIndentBo extends BaseRowModel {

// 订单编号

@ExcelProperty(value = {"广告编号"},index = 0)

private String id;

// 交易类型:1 买入 2卖出

private Integer tradeType;

@ExcelProperty(value = {"交易"},index = 1)

//交易类型(导出时使用)

private String tradeTypeStr;

// 用户ID begin

private Long userID;

private Integer login;

private String alaisName;

@ExcelProperty(value = {"会员"},index = 2)

private String realname;

private String phone;

private String email;

// 用户信息 end

// 资产ID

private Long coinID;

@ExcelProperty(value = {"资产名称"},index = 3)

private String coinName;

// 交易状态

private Integer tradeState;

//交易状态(导出时使用)

@ExcelProperty(value = {"状态"},index = 4)

private String tradeStateStr;

// 取价类型

private Integer priceType;

// 取价类型(导出时使用)

@ExcelProperty(value = {"取价类型"},index = 5)

private String priceTypeStr;

// 平台实时价格的百分比

@ExcelProperty(value = {"溢价"},index = 6)

private BigDecimal premium;

// 交易单价

@ExcelProperty(value = {"价格"},index = 7)

private BigDecimal price;

// 交易数量

private BigDecimal cionNum;

// 剩余数量

private BigDecimal residueNum;

// 交易最小金额

@ExcelProperty(value = {"最小金额"},index = 8)

private BigDecimal minPrice;

// 交易最大金额

@ExcelProperty(value = {"最大金额"},index = 9)

private BigDecimal maxPrice;

// 付款体例类型

@ExcelProperty(value = {"付款类型"},index = 10)

private String payType;

// 付款期限30-120分钟之内

@ExcelProperty(value = {"付款期限"},index = 11)

private Integer payTime;

// 建立时间

@ExcelProperty(value = {"建立时间"},index = 12)

private String createTime;

// 交易密码

private String password;

/**

* 建立人

*/

private Long createBy;

/**

* 修改人

*/

private Long updateBy;

private String activeFlag;

}

controller:

boUtil = ExcelUtils.export(list, response, AdvertisingIndentBo.class);

list:LIst<AdvertisingIndentBo>:你需要处处的数据集合。

BaseRowModel:为什么要继承BaseRowModel,因为他是基类。

@ExcelProperty:对应excel中的表头。

value:表头的名称

index:排序

总结

以上就是esatExcel的excel导出,如果有什么疑问或者不足,欢迎巨匠的留言。

更多内容回复查看:
游客,如果您要查看本帖隐藏内容请回复
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

5

主题

50

帖子

11

金币

连长

Rank: 7Rank: 7Rank: 7

积分
135

新兵

沙发
发表于 2018-11-6 00:47:06 | 只看该作者
头条的代码功能不可啊
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

16

主题

49

帖子

34

金币

连长

Rank: 7Rank: 7Rank: 7

积分
129
板凳
发表于 2018-11-6 00:47:26 | 只看该作者
Excel用C#就太便利了
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

13

主题

60

帖子

35

金币

连长

Rank: 7Rank: 7Rank: 7

积分
171

新兵

地板
发表于 2018-11-6 00:47:34 | 只看该作者
不太理解为什么有这种业务需求。你一顿华丽操作把几百万条excel导出来了,可是excel其实不克不及打开这么大的文件啊。导成csv欠好吗?
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

9

主题

40

帖子

20

金币

连长

Rank: 7Rank: 7Rank: 7

积分
87

新兵

5#
发表于 2018-11-6 00:48:14 | 只看该作者
如果你把excel的有些列隐藏了 easyexcel会读取错乱
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

10

主题

45

帖子

21

金币

连长

Rank: 7Rank: 7Rank: 7

积分
93
6#
发表于 2018-11-6 00:49:01 | 只看该作者
百万级别还是建议用csv格式,直接写文本。
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

8

主题

82

帖子

28

金币

团长

Rank: 10Rank: 10Rank: 10

积分
249

新兵社区QQ达人K歌之王论坛帅哥小熊青玉草论坛精英爱心

7#
发表于 2018-11-6 00:49:34 | 只看该作者
对读Excel文件支持的如何,内存消耗大吗
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

6

主题

35

帖子

13

金币

连长

Rank: 7Rank: 7Rank: 7

积分
87
8#
发表于 2018-11-6 00:50:27 | 只看该作者
属下,实在不睬解为什么要导出百万级excel,耍吗?
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

14

主题

50

帖子

29

金币

连长

Rank: 7Rank: 7Rank: 7

积分
126
9#
发表于 2018-11-6 00:50:32 | 只看该作者
支持中文格式么
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

10

主题

53

帖子

23

金币

连长

Rank: 7Rank: 7Rank: 7

积分
153
10#
发表于 2018-11-6 00:51:09 | 只看该作者
导出csv文件速度最快,excrl打开可以直接编辑,便利的很
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VC中文网 - 豫ICP备14012807号|小黑屋|联系客服|金币冲值|浙江省快乐12走势图表

GMT+8, 2019-2-18 22:31 , Processed in 0.109375 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 浙江省快乐12走势图表 返回列表