当前位置: 首页 > news >正文

导出easyExcel(前端vue2/后端springboot)

本来我是不想写这篇博文的,随着我技术的上升,已经很少有东西恶心我了,百度什么都能出来,但是百度出来的都是不能直接用的,所以我手写出来供我下次使用

后端

maven如下

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.8</version>
</dependency>

实体类


@Data
@TableName("sys_logininfor")
@ExcelIgnoreUnannotated
public class SysLogininfor implements Serializable {private static final long serialVersionUID = 1L;/*** ID*/@ExcelProperty(value = "序号")@TableId(value = "info_id", type= IdType.AUTO)private Long infoId;/*** 登录状态 0成功 1失败*/@ExcelProperty(value = "登录状态", converter = ExcelDictConvert.class)@ExcelDictFormat(dictType = "sys_common_status")private String status;/*** 登录IP地址*/@ExcelIgnoreprivate String ipaddr;/*** 提示消息*/@ExcelProperty(value = "提示消息")private String msg;/*** 请求参数*/@TableField(exist = false)private Map<String, Object> params = new HashMap<>();}

util 工具类

//导出接口public static <T> void export(HttpServletResponse response, Class<T> clazz, List<T> data, String fileName, String sheetName){response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");try{fileName= new String((fileName + ExcelTypeEnum.XLSX.getValue()).getBytes(), StandardCharsets.ISO_8859_1);response.setHeader("Content-Disposition", "attachment; filename="+fileName);EasyExcelFactory.write(response.getOutputStream()).head(clazz).registerWriteHandler(new ExcelWidthStyleStrategy()).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).doWrite(data);}catch(IOException e){log.error("export excel error:",e);}}

controller 接口

    @PostMapping("/export")void export(JsonObject param,HttpServletResponse response){List<SysLogininfor> list = new ArrayList<>();String dateFormat = new DateTime().toString("yyyyMMddHHmmss");String fileName =dateFormat +"统计";export(response, SysLogininfor.class,list,fileName,"sheet1");}

前端:

js引入接口

export function export(data) {return request({url: "/export",method: post,data: data,responseType:'arraybuffer' ,})
}

vue调用

  this.loading=true
export({params: {}
}).then(response => {// 请求成功返回后,获取到Excel文件的二进制数据const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' });// 创建下载链接const downloadUrl = URL.createObjectURL(blob);// 创建一个隐藏的a标签,设置下载链接和文件名,模拟点击下载const link = document.createElement('a');link.style.display = 'none';link.href = downloadUrl;link.download = '统计.xlsx';document.body.appendChild(link);link.click();document.body.removeChild(link);this.loading=false
}).catch(error => {// 请求失败处理console.error(error);
});

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java 面试常见问题之——为什么重写equals时必须重写hashCode方法
  • thinkphp框架远程代码执行
  • MATLAB在算法处理上的作用
  • 鸿蒙系统学习指南
  • 学习大数据DAY30 python基础语法3
  • 渗透测试--DNS劫持实验
  • 5.0-软件工程基础知识-考点分析
  • 自用git命令(待完善)
  • 前端开源插件
  • 如何用Java编写Kafka生产者代码,实现定时向Kafka集群发送批量数据的功能?
  • 防御笔记第九天(持续更新)
  • C# 6.定时器 timer
  • linux系统编程中Shell脚本配置,及linux脚本中的man test
  • 【数据结构与算法】单链表、双链表和循环单链表中头指针未知的情况下能否删除某节点
  • Postman下载安装~用于springboot控制层测试
  • 【391天】每日项目总结系列128(2018.03.03)
  • AHK 中 = 和 == 等比较运算符的用法
  • CSS中外联样式表代表的含义
  • Debian下无root权限使用Python访问Oracle
  • flutter的key在widget list的作用以及必要性
  • JAVA并发编程--1.基础概念
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS笔记四:作用域、变量(函数)提升
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • leetcode98. Validate Binary Search Tree
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • scala基础语法(二)
  • 阿里云购买磁盘后挂载
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端面试总结(at, md)
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用Visual Studio开发以太坊智能合约
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • #HarmonyOS:基础语法
  • #QT(智能家居界面-界面切换)
  • (07)Hive——窗口函数详解
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (day6) 319. 灯泡开关
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (ZT)出版业改革:该死的死,该生的生
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (黑马点评)二、短信登录功能实现
  • (六)激光线扫描-三维重建
  • (一) storm的集群安装与配置
  • (转)EOS中账户、钱包和密钥的关系
  • (转)VC++中ondraw在什么时候调用的
  • (转)甲方乙方——赵民谈找工作
  • (转载)OpenStack Hacker养成指南
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Winform开发笔记(一)
  • .NET 反射的使用
  • .Net多线程Threading相关详解
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】