介绍步骤

1.首先导入easyexcel依赖

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

2.然后在untils里面写出方法类!

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;import java.io.OutputStream;
import java.util.List;/*** easyExcel方法* @author 19225**/
public class ExcelBuilder {
//这是一个方法类,如果要写多sheet就,多加入几个List就可以解决,但如果太多sheet就需要写入新的方法了,这个方法可能就会不适用。public static void build(OutputStream out,List list, List list1,Class <? extends BaseRowModel> a,Class <? extends BaseRowModel> b) throws Exception {ExcelWriter writer = EasyExcelFactory.getWriter(out);//对应的为第一张表,从第0行开始,载入的类为aSheet sheet = new Sheet(1,0, a);//自定义表名sheet.setSheetName("统计表");Sheet sheet1 = new Sheet(2,0,b);sheet1.setSheetName("测试表");writer.write(list,sheet);writer.write(list1,sheet1);writer.finish();//一定要关闭输出流out.close();}}

3.接着写对应的实体类


import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.security.PrivateKey;@Data
@AllArgsConstructor
@NoArgsConstructor
//一定要加@Buileder
@Builder
public class MatchingViewEntity extends BaseRowModel {//字段名//这里是说excel的头行的属性名,index=0,代表把这个属性值放在第一列@ExcelProperty(value = "字段名",index = 0)private String filedName;//是否匹配@ExcelProperty(value = "是否匹配",index = 1)private String match;//资源项@ExcelProperty(value = "资源项",index = 2)private String zyx;}

另外的实体类与之类似,根据自己的要求来写就可以。

4.接着是前端,首先写一个html标签按钮

//写一个下载报告 点击事件
<input type="button" class="btn btn-danger" id="download" ms-on-click="viewresult"value="下载报告"/>

5.js写一个函数

viewresult:function(){//这是自己写的对应数据库查找的id,可以不加let taskId= sessionStorage.getItem("taskId");//请求路径window.location.href="(里面放自己的请求路径)"+taskId;

6.写controller层

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.google.gson.JsonObject;
import com.zhibeitech.common.utils.HttpContextUtils;
import com.zhibeitech.common.utils.R;
import com.zhibeitech.modules.jtbresource.entity.*;
import com.zhibeitech.modules.api.utils.ExcelBuilder;
import com.zhibeitech.modules.jtbresource.service.ExcludeService;
import com.zhibeitech.modules.jtbresource.service.TaskService;
import com.zhibeitech.modules.jtbresource.service.ZYMLService;
import com.zhibeitech.modules.jtbresource.service.ZYMLXXService;
import org.apache.log4j.Logger;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import static com.baidu.translate.demo.IndexOperate.matchedIndex;/*** Excel下载 EasyExcel* @author 19225* @email 1922569996@qq.com* @date 2020年10月14日 上午10:58:10*/@RestController
@RequestMapping("请求地址")@ResponseBody
public class downloadController {private static Logger logger = Logger.getLogger(downloadController.class);@Autowiredprivate TaskService taskService;@Autowiredprivate ZYMLService zymlService;@Autowiredprivate ExcludeService excludeService;@Autowiredprivate ZYMLXXService zymlxxService;@Value("${projectfilepath.rootpath}")private String rootpath;@RequestMapping("test/{taskId}")//这个还是跟着我的id来的,用来查找数据库里的数据,可以不加@ResponseBody//这个也可以直接响应,删掉@PathVariable("taskId") Integer taskIdpublic String download(@PathVariable("taskId") Integer taskId, HttpServletResponse response) throws IOException {String fileName = "数据统计表";response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(), "iso-8859-1") + ".xls");OutputStream out = response.getOutputStream();//中间写两个list存入自己的实体类,输出为excel格式//举个例子for (int i = 0; i <10 ; i++) {Attributes a = new Attributes();a.setCount(i);a.setField("属性");l1.add(a);}List<MatchingViewEntity> l2 = new ArrayList<>();for (int i = 0; i <10 ; i++) {MatchingViewEntity m = new MatchingViewEntity();m.setZyx("1");m.setMatch("2");m.setFiledName("3");l2.add(m);}try {ExcelBuilder.build(out,l1, l2, Attributes.class, MatchingViewEntity.class);} catch (Exception e) {e.printStackTrace();}return null;}}

7.测试

有了按钮


点击以后,可以下载!!!
任务完成!

PS:心得
本人是实习生,这是公司里要求做的第一个小需求,很简单,我却用了很多天,问了同学,查了很多东西。没报过班,都是自己钻研,时间也没有多久,就来实习了,也算是懂一点点关于java的东西吧,方法什么的可以写出来,但就是不知道如何响应前端,对后台处理的数据也想了很久,不知道流程是怎么来的,不过也算是一点点慢慢懂得很多东西了。

如果你看到我这篇文章,如果你也是个小白,在公司里被leader说,不要怕,撑过去,一点点来,也别太自责,大家都是这么过来的,多找资料,多动脑子,想明白这件事情的流程和前因后果,为什么这么做,别放弃,没有谁是一下子就懂得了的,相信自己,希望这篇文章能帮到你!!

EasyExcel 在网页上点击按钮下载,实现功能相关推荐

  1. Vue中实现页面上点击按钮下载文件(exe)

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面搭建起来的Vue前端项目中 ...

  2. js下载文件 java_[Java教程]使用js实现点击按钮下载文件

    [Java教程]使用js实现点击按钮下载文件 0 2016-11-11 19:02:54 有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方 ...

  3. java抓取网页数据_实现网络图片爬虫,只需5秒快速把整个网页上的图片全下载打包zip...

    我们经常需要用到互联网上的一些共享资源,图片就是资源的一种,怎么把网页上的图片批量下载下来?有时候我们需要把网页上的图片下载下来,但网页上图片那么多,怎么下载我们想要的东西呢,如果这个网页都是我们想要 ...

  4. c #点击按钮下载excel文件

    c #点击按钮下载excel文件 前端代码省去了,button属性οnclick="excel" public void excel(object sender, EventArg ...

  5. vue 点击文字input_vue input实现点击按钮文字增删功能示例

    本文实例讲述了vue input实现点击按钮文字增删功能.分享给大家供大家参考,具体如下: content="width=device-width, user-scalable=no, in ...

  6. 去掉网页上链接或按钮的虚线框

    文章转自:http://blog.sina.com.cn/s/blog_4ef1fbde0100v1rt.html,所有权利归原作者所有. 经常用鼠标在链接或按钮上点击时会出现虚线框,很多朋友常常想去 ...

  7. 点击按钮下载Excel表格

    网页点击按钮,下载Excel表格到本地 // 下载Excel表格 // table:页面需要下载的表格名 elem:下载按钮 tableName:下载后的报表名 function getExcelUr ...

  8. 网页上点击java没反应_JavaScript_javascript:void(0)点击登录没反应怎么解决,巧用批处理解决IE不支持JavaScri - phpStudy...

    javascript:void(0)点击登录没反应怎么解决 巧用批处理解决IE不支持JavaScript等问题 rem =====批处理开始======== regsvr32 actxprxy.dll ...

  9. vue 自动生成二维码,并点击按钮下载二维码

    需求:前端根据后端返回的内容生成二维码,点击按钮能下载此二维码 1.npm 引入qrcodejs2 包 (用qrcodejs2 生成的二维码展示效果比较好,推荐使用) npm i qrcodejs2 ...

最新文章

  1. 论文解读 Combating Adversarial Misspellings with Robust Word Recognition
  2. Squid服务在实际工作中的应用、优化和流量监控
  3. 关于私有变量,静态私有变量
  4. 六十二、数据结构栈和队列的相互实现
  5. HDU - 3486 Interviewe(RMQ-st表+暴力)
  6. vaOJ10369 - Arctic Network
  7. python常用的库有哪些餐厅_这十个Python常用库,学习Python的你必须要知道!
  8. java arraylist排序_一文读懂Java集合框架
  9. (37)System Verilog类外方法示例
  10. python如何创建一个列表_使用python中的format()创建一个列表(make a list using format() in python)...
  11. 用ASP.Net写一个发送ICQ信息的程序
  12. matlab中k-means算法_机器学习 | KMeans聚类分析详解
  13. java连接oracle jdbc连接
  14. AdaDelta算法
  15. python制作“电子钢琴”
  16. 3Dmax移动,旋转,缩放图标不显示
  17. 如何将英文PDF翻译成中文且格式不变?(PDF免费翻译攻略)
  18. PS入门(1-7) HSB色彩模式
  19. MICCAI 2022 | 深圳大学医学部智能超声实验室6篇论文分享!
  20. element-ui upload 多个文件一次请求上传(Vue精简版)

热门文章

  1. 7.编写一个程序,要求用户输入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款:Enter a dollar amount: 93S20bills:4S10bill
  2. android 键盘顶起dialog,Android dialog软键盘弹出顶起View
  3. 历届亚洲男子篮球锦标赛排名 中国第14次傲视群雄
  4. 联合证券|左手消费,右手TMT!超270只股票新年获“买入”“推荐”
  5. python getattr setattr_python hasattr/getattr/setattr介绍
  6. Qt多线程编程之moveToThread
  7. DOM操作——怎样添加、移除、移动、复制、创建和查找节点?
  8. idea自动补全类名和方法名
  9. WaveNet相关原理及细节介绍
  10. java运维招聘_【蚂蚁金服】java、运维、测试-内推