1.引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.2.1</version>
</dependency>
2.后端代码
我们可以在官网找到相关代码
/**
* 文件下载(失败了会返回一个有部分数据的Excel)
* <p>
* 1. 创建excel对应的实体对象 参照{@link DownloadData}
* <p>
* 2. 设置返回的 参数
* <p>
* 3. 直接写,这里注意,finish的时候会自动关闭OutputStream,当然你外面再关闭流问题不大
*/
@GetMapping("/export")
public void download(HttpServletResponse response) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
//"测试":就是我们要生成文档的名称,可以改为自己的
String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
/**
* DownloadData.class:导出数据类型
* .doWrite(data):导出数据来源,比如RecordService.getTodayRecord(),可以从我们自己
*写的方法中获取
* .sheet():文件内标题,可以换成自己的
*/
EasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("模板").doWrite(data());
}
3.前端调用
前端我们直接调用这个方法就行
methods:{
exportRecord(){
//相当于超链接,填写后端地址,_blank表示在新窗口打开
window.open("/system/record/export","_blank");
}}
4.导出表格内字段名是英文怎么解决
其实很简单,只需要在我们实体类上加上
@ExcelProperty注解就行了,
@ExcelIgnore注解用于忽略字段,我们不需要生成的字段就可以添加该注解
用法如下所示文章来源:https://www.toymoban.com/news/detail-511430.html
@TableName("pay_record")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Record implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 交易记录表
*/
@ExcelProperty("id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 交易类型
*/
@ExcelIgnore
private Integer type;
/**
* 交易类型内容
*/
@ExcelProperty("交易类型")
private String typeContent;
/**
* 日期
*/
@ExcelProperty("创建时间")
private String date;
/**
* 交易编号
*/
@ExcelProperty("订单编号")
private String out_trade_no;
/**
* 公司名称
*/
@ExcelIgnore
private String ename;
/**
* 交易金额(分)
*/
@ExcelProperty("交易金额(分)")
private int price;
/**
* 交易客户手机号
*/
@ExcelProperty("交易客户手机号")
private String phone;
/**
* 交易状态(交易失败 交易成功)
*/
@ExcelIgnore
private String state;
@ExcelIgnore
private Integer category;
@ExcelIgnore
private Integer aid;
@ExcelIgnore
private long timestamp;
@ExcelIgnore
private String appid;
@ExcelIgnore
private String partnerid;
@ExcelIgnore
private String noncestr;
@ExcelIgnore
private String sign;
}
5.总结
easyExcel是一个非常简单好用的数据导出导入工具,easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便。文章来源地址https://www.toymoban.com/news/detail-511430.html
到了这里,关于EasyExcel如何导出数据?超级简单,看这就够了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!