java+vue实现excel文件从服务器下载

JS逆向-快手__NS_hxfalcon参数分析 现在快手H5接口都需要__NS_hxfalcon这个参数,这篇文章就是逆向这个参数 阅读详情

excel处理全套流程

前端代码
<el-upload
  class="upload-demo"
  ref="upload"
  action="http://127.0.0.1:8080/help/file"
  accept=".xls,.xlsx"
  :on-success="handleAvatarSuccess"
  name="excelFile"
  :auto-upload="false">
  <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
  <div slot="tip" class="el-upload__tip">上传文件请命名为tid.xlsx或者utid.xlsx,excel文件第一列为要转换的数据</div>
</el-upload>

on-success表示文件上传处理成功之后调用的下载函数
submitUpload为点击上传的函数

submitUpload () {
      if (this.type == null) {
        this.$alert('请选择转换类型', '警告')
        return
      }
      this.$refs.upload.submit()
    },
    handleAvatarSuccess () {
      axios({
        url: 'http://127.0.0.1:8080/help/download',
        method: 'post',
        //下面这句必须有,表示返回的是文件
        responseType: 'blob',
        headers: {
          'X-Requested-With': 'XMLHttpRequest'
        },
        params: {
          type: this.type
        }
      }).then(res => {
      	//获取文件名,需要在后端进行配置
        let filename = res.headers['filename']
        let type = res.headers['content-type'].split(';')[0]
        let blob = new Blob([res.data], { type: type })
        const a = document.createElement('a')

        // 创建URL
        const blobUrl = window.URL.createObjectURL(blob)
        a.download = filename
        a.href = blobUrl
        document.body.appendChild(a)
        // 下载文件
        a.click()
        // 释放内存
        URL.revokeObjectURL(blobUrl)
        document.body.removeChild(a)
      })
    }
后端代码
//文件下载
    @PostMapping(value = "/download")
    @ResponseBody
    public void downloadFiles(@RequestParam(value = "type", required = true) String type,
                              HttpServletResponse response) {
        if (StringUtils.isBlank(type)) {
            //return error(CommonErrorCode.COM_INVALID_PARAMETER, "文档id有误");
            System.out.println("请先输入要处理的文档");
        }

        try {
            String fileName;
            if (type.equals("tidToUtid")) {
                fileName = "tidToUtid.xlsx";
            } else {
                fileName = "utidToTid.xlsx";
            }
            //服务器对应的文件的路径
            String file = "/Users/dxm/Desktop/" + fileName;
            // 得到这个excel表格对象
            XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file));
            OutputStream fos = null;
            fos = response.getOutputStream();
            response.setCharacterEncoding("UTF-8");
            // 设置contentType为excel格式
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            //下面这三行必须设置前端才可以读取到文件名
            response.setHeader("Content-Disposition", fileName);
            response.setHeader("filename", fileName);
            response.setHeader("Access-Control-Expose-Headers", "filename");
            wb.write(fos);
            fos.close();
        } catch (FileNotFoundException e) {
            logger.error("下载文档异常-找不到文件:{}", e);
            //return error(CommonErrorCode.COM_UNKNOWN_ERROR, "找不到文件");
        } catch (UnsupportedEncodingException e) {
            logger.error("下载文档异常-编码转换:{}", e);
            //return error(CommonErrorCode.COM_UNKNOWN_ERROR, "编码转换失败");
        } catch (IOException e) {
            logger.error("下载文档异常-io:{}", e);
            //return error(CommonErrorCode.COM_UNKNOWN_ERROR, "下载文档异常");
        }
    }
java生成excel文件
public class ExcelExporter {

    private static final Logger LOGGER = LoggerFactory.getLogger(ExcelExporter.class);
    private static final String[] tableNameTU = {"***", "***", "***"};
    private static final String[] tableNameUT = {"***", "***", "***"};

    private String[] headerNames;
    private Workbook workBook = new XSSFWorkbook();
    private Sheet sheet;

    /**
     * @param tableName 表头
     */
    public ExcelExporter(String tableName) {
        if (tableName.equals("tidToUtid")) {
            this.headerNames = tableNameTU;
        } else {
            this.headerNames = tableNameUT;
        }
        sheet = workBook.createSheet("sheet1");
        initHeader();
    }

    /**
     * 初始化表头信息
     */
    private void initHeader() {
        // 创建第一行
        Row row = sheet.createRow(0);
        Cell cell = null;
        // 创建表头
        for (int i = 0; i < headerNames.length; i++) {
            cell = row.createCell(i);
            cell.setCellValue(headerNames[i]);
            setCellStyle(cell);
        }
    }

    /**
     * 设置单元格样式
     *
     * @param cell 单元格
     */
    public void setCellStyle(Cell cell) {
        // 设置样式
        CellStyle cellStyle = workBook.createCellStyle();

        // 设置字体
        Font font = workBook.createFont();
        font.setFontName("宋体");
        font.setFontHeightInPoints((short) 13);

        cellStyle.setFont(font);
        cell.setCellStyle(cellStyle);
    }

    public void createTableRows(List<String> data) {
        int size = data.size();
        for (int i = 0; i < size; i++) {
            String[] flag = data.get(i).split(",");
            Row row = sheet.createRow(i + 1);
            Cell cell;
            int tableLength = 3;
            for (int j = 0; j < tableLength; j++) {
                String value = flag[j];

                cell = row.createCell(j);
                cell.setCellType(CellType.STRING);
                cell.setCellValue(value);
            }

        }
    }

    /**
     * 根据表头自动调整列宽度
     */
    public void autoAllSizeColumn() {
        if (sheet instanceof SXSSFSheet) {
            // 如果是SXSSFSheet,需要调用trackAllColumnsForAutoSizing方法一次
            SXSSFSheet tmpSheet = (SXSSFSheet) sheet;
            tmpSheet.trackAllColumnsForAutoSizing();
        }
        for (int i = 0, length = headerNames.length; i < length; i++) {
            sheet.autoSizeColumn(i);
        }
    }

    /**
     * 将数据写出到excel中
     *
     * @param outputStream
     */
    public void exportExcel(OutputStream outputStream) {
        // 导出之前先自动设置列宽
        this.autoAllSizeColumn();
        try {
            workBook.write(outputStream);
        } catch (IOException e) {
            LOGGER.error(" exportExcel error", e);
        } finally {
            IOUtils.closeQuietly(outputStream);
        }
    }

    /**
     * 将数据写出到excel中
     *
     * @param outputFilePath
     */
    public void exportExcel(String outputFilePath) {
        // 导出之前先自动设置列宽
        this.autoAllSizeColumn();
        FileOutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream(outputFilePath);
            workBook.write(outputStream);
        } catch (IOException e) {
            LOGGER.error(" exportExcel error", e);
        } finally {
            IOUtils.closeQuietly(outputStream);
        }
    }

}
java读取excel文件
public class ExcelUtils {
    private static final Logger LOGGER = LoggerFactory.getLogger(ExcelUtils.class);

    public static List<String> excelToShopIdList(InputStream inputStream) {
        List<String> list = new ArrayList<>();
        Workbook workbook;
        try {
            workbook = WorkbookFactory.create(inputStream);
            inputStream.close();
            //工作表对象
            Sheet sheet = workbook.getSheetAt(0);
            //总行数
            int rowLength = sheet.getLastRowNum() + 1;
            //工作表的列
            Row row = sheet.getRow(0);
            //总列数
            //int colLength = row.getLastCellNum();
            //得到指定的单元格
            Cell cell;
            for (int i = 0; i < rowLength; i++) {
                row = sheet.getRow(i);
                cell = row.getCell(0);
                if (cell != null) {
                    String data = cell.getStringCellValue();
                    data = data.trim();
                    if (!data.equals("")) {
                        list.add(data);
                    }
                }
            }
        } catch (Exception e) {
            LOGGER.error("parse excel file error :", e);
        }
        return list;
    }
}
Qt多线程实战:如何优雅地处理Modbus设备通信中的线程安全问题 本文深入探讨了在Qt框架下实现Modbus设备通信时的多线程安全问题,提供了优雅的解决方案。通过生产者-消费者模型、任务队列与锁机制等设计模式,有效解决了界面卡顿、数据包错乱等问题。文章还详细介绍了对象生命周期管理、信号槽连接类型选择等关键实现细节,帮助开发者构建稳定可靠的Modbus通信模块。 阅读详情

相关推荐

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

根据条件查询下载Excel表单(Java+Vue 及 Vue 两种方式)

如果想要下载好看的Excel推荐阅读: 详细讲解Java使用EasyExcel函数来操作Excel表(附实战) 详细讲解Java使用HSSFWorkbook函数导出Excel表(附实战) Python读取Excel的几种工具包(附Demo) 详细的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

码农研究僧的博客 1758

ThreeJS教程:地图案例(包围盒、正投影)

推荐:将加入你的3D工具链。

jianshi2023的博客 1007

【RuoYi】实现文件的上传与下载

首先,最近在做一个管理系统,里面刚好需要用到echarts图和富文本编辑器,然后我自己去看了官网觉得有点不好懂,于是去B站看来很多视频,然后看到了up主【程序员青戈】的视频,看了他讲的echarts图和富文本编辑器部分的内容,觉得讲的很好,很推荐大家去观看他的视频。然后在富文本编辑器这部分内容中,需要用到,文件上传与下载的部分知识,所以这里做一个笔记,来记录关于这部得分的内容,echarts图和富文本编辑器部分的内容也会在后面的博客中介绍。希望对大家有所帮助啦~ 导入hutool的依赖 三、文件上传

qq_51933234的博客 9457

手把手教你学Simulink--基于飞行控制与稳定性的场景实例:固定翼无人机的自动起飞与降落控制

本文介绍了使用Simulink对固定翼无人机自动起飞与降落控制系统进行建模与仿真的完整流程。首先构建了包含飞行器动力学模型、控制系统、环境模拟等模块的系统结构,详细阐述了简化动力学方程的推导和实现。重点讲解了PID控制器设计,包括起飞阶段的速度控制和降落阶段的高度控制策略。通过添加环境干扰和输入信号,建立了完整的仿真模型,并利用输出显示模块评估系统性能。该实例为无人机自主控制系统的开发提供了有效的仿真验证方法,有助于优化参数提高飞行稳定性。

MHD0815的博客 4308

基于AUTOSAR的汽车电子项目--电动助力转向系统

基于AUTOSAR的汽车电子项目开发通常涵盖广泛的领域,例如动力系统控制、车身电子、信息娱乐系统、高级驾驶辅助系统(ADAS)等。以下是一个简化的示例项目,展示了如何在AUTOSAR环境下开发一个电动助力转向系统(Electric Power Steering, EPS)的控制软件

MHD0815的博客 2129

java后端导出excel文件流,前端vue接收下载

1.后端excel导出工具类 主要依赖 <!--工具包--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.4</version>

单筱风的博客 3844

QML 果冻抖动:用 Scale 动画模拟 Q 弹反馈

介绍果冻抖动效果:点击后卡片通过多段 ParallelAnimation 实现 Scale X/Y 反向缩放和逐步衰减,模拟果冻弹性形变;进阶版本加入小幅 Rotation 增加活泼感,适合游戏、儿童应用等趣味反馈场景。

u011186532的专栏 424

前端通过后端java下载excel-VUE-JAVA - Poi-文件流-方式2

前端通过后端java下载excel-VUE-JAVA - Poi-文件流-方式2前言一、pom.xml二、poiUtil.java工具类三、Cotroller.java 前言 1.JavaPOI导出Excel,根据Excel格式,采用不同工具类 HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls; XSSFWorkbook:是操作Excel2007后的版本,扩展名是.xlsx; SXSSFWorkbook:是操作Excel2007后的版本,扩展名是.xlsx; 2

weixin_45941687的博客 823

Linux 内核中 ARP 协议的全链路解析:从触发机制到物理层发送

核心设计思想按需解析:减少不必要的 ARP 请求,降低网络负载。分层解耦:协议栈各层(邻居子系统、Netfilter、驱动)职责分离,提高扩展性。ARP的核心作用是将IP映射为MAC地址,确保数据链路层能正确封装帧。其触发时机围绕“未知MAC地址需求”展开,覆盖通信初始化、缓存更新、网络变更及维护等多种场景。

数字人生 367

3D iToF深度分辨率测量

本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。

dream it possible 252

java导出excel添加进度条,前端基于vue

java后台在导出数据的时候在session中存入进度值,前端在写一个定时任务来请求session中的值 java代码如下: excel获取数据的方法中分步骤写入如下代码 request.getSession().setAttribute("percent",10);//这里是10% request.getSession().setAttribute("percent",50);//这里是5...

陌子曦的专栏 3771

【即插即用模块】注意力篇 | MICCAI 2023 | MFE:多尺度特征提取,告别固定感受野,猛涨2个点!

本文提出一种用于低分辨率乳腺癌病理图像超分辨率与分类的网络SHISRCNet。针对现有方法处理低分辨率图像效果差、感受野固定等问题,设计了多特征提取模块(MFE),通过多速率空洞卷积覆盖全尺度感受野(局部到全局),结合递进残差连接和动态权重融合机制,实现自适应多尺度特征增强。实验表明,该模块在超分辨率任务中PSNR提升近2个点,分类准确率显著提高。代码提供详细注释,支持即插即用,适用于各类多尺度视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 206

excel后台导出 前端vue 后台java

好久没写东西了,项目中要用到前端下载excel,我们的前端选择的是VUE,后端选择的是java,我就写一下实现吧,方便后来人少走一些弯路。 java后台实现代码 @ApiOperation(value = "导出日志",notes = "导出列表") @RequestMapping(value = "/exportLogs",method = RequestMethod.GET) ...

y350957516的专栏 671

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Excel web前端(VUE)导出,通过ServletOutputStream

后端代码: @GetMapping("/export") public void export(HttpServletRequest request, HttpServletResponse response) throws Exception { // 1.通过poi创建一个excel Workbook wb = new SXSSFWorkbook(); wb.createSheet().createRow(1).createCell(1).setC

Radish 1354

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Elemnt UI 上传组件自动下载回写文件

场景 用户导入EXCEL表格数据,服务器执行导入检查、合法数据写入数据库、回写文件。 文件中要在表格数据中每一行标明执行结果。若不成功说明错误原因。 实现方案 采用异步方案,在获取到上传组件成功上传之后。将结果文件存储到服务器/分布式文件服务器中,前端异步去执行下载文件。 采用同步,在上传的请求中将结果文件以流的形式返回给前端 方案1,简单高效。存在浪费服务器空间问题,因为这个文件不需要长期存放在服务器。若上传文件很多势必将造成磁盘空间紧张 方案2,简单直接高效。(故采用此方案) Java

zyj0070的博客 482

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Vue + JAVA 实现Excel的模板文件下载

文章目录 前言 一、JAVA后端接口设计 二、Vue前端页面设计 总结 前言 实现前端页面基于 Vue, 后端基于 JAVA ,最终通过前台页面点击下载excel模板文件,调用后端接口返回模板文件的输出流,将模板excel下载到本地。 需要注意的是:因为在实际应用场景中,后端是用SpringBoot打Jar包的方式部署到服务器中,所以需要后端适配对应的模板文件能够在服务器中,能够正常读取;本地运行代码的时候,需要注意,先使用 mvn clean,然后再 mvn..

weixin_41221717的博客 3955

vue项目中实现下载后端返回的excel数据表格

查看更多资源 1. 案例简介: vue项目中,客户端需要实现以excel表格形式下载数据,后端为java,接受请求 >> 读取数据库 >> 生成excel >> 返回;前端为vue:发送请求 >> 接受响应 >> 实现excel下载。 2. 案例图示: 3. 后端java代码: /** * ...

悦度空间 1万+

SpringBoot + Vue 前后端分离项目实现文件上传至本地以及文件下载功能

SpringBoot + Vue 实现文件上传功能,文件下载功能

欢迎来到Gorit的博客 1万+

VUE+JAVA实现EXCEL模板下载

VUE+JAVA实现EXCEL模板下载

永和大王门店管理系统-练习ssm框架整合 1621

Vue中实现自定义excel下载

如果涉及到文件下载,尽量后端传一个list,然后都在前端合成相应的文件以到达减轻服务器负担的作用。​最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。有需要的小伙伴,可以点击下方卡片领取,无偿分享。

梅花寺 4290

vue+Java实现前端下载文件(excel导出)

1.后端 后端方法的放回值类型和接收参数 后端以流的形式返回到前端 // 设置生成的Excel的文件名,并以中文进行编码 String codedFileName = "****表"; System.err.println("codedFileName: " + codedFileName); response.setHeader("Content-Disposition", "attachmen...

qq_34940644的博客 1万+

前端通过后端java下载excel-VUE-JAVA - Poi-文件名

@](前端通过后端java下载excel-VUE-JAVA - Poi) 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样

weixin_45941687的博客 530

Vue+后端实现Excel下载

后端 @PostMapping("/exportAttendanceHistory") public ResponseEntity exportAttendanceHistory(@RequestBody WcrWorkAttendanceDetailsHistory param){ XSSFWorkbook book = new XSSFWorkbook(); ...

独立行走的小黄 2130

vue实现带token校验下载文件

在做一个前台vue,后台是java的项目中,有导出Excel文件的功能。开始做的导出Excel功能不需要带token,这种方式是及其不合理的,数据容易泄露。经过一番折腾实现了Vue带token校验下载文件流的功能。 不带token的下载方法: 不带token下载文件,实现特别简单直接使用<a> 标签,标签的href属性填写后台接口或服务器上文件地址即可。 <a:href="url">导出</a> 带token校验的方法: 文件在网络中传输都..

u010000915的博客 3969

【前端文件下载】vue实现文件流动态下载(案例详解)

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步! 吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里… 文章目录一、业务场景二、代码分享三、拓展补充 一、业务场景 场景一:如果你的文件是静态的存储在自己的服务器上; 使用window.lo.

末尾卡片和博主交流学习! 5002
上一篇: springboot+mysql 多数据源配置
下一篇: 最小编辑距离
code_AC
博客等级 码龄12年 255粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值