iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Springboot怎么实现前后端分离excel下载
  • 639
分享到

Springboot怎么实现前后端分离excel下载

2023-06-25 14:06:25 639人浏览 安东尼
摘要

本篇内容介绍了“SpringBoot怎么实现前后端分离excel下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot前后端

本篇内容介绍了“SpringBoot怎么实现前后端分离excel下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

springboot前后端分离excel下载

现在公司的技术栈是springboot作为后端,前端Vue, 现在要做excel的导出功能, 之前没做过,写一下记录下.

springboot版本是2.0.6 poi 3.14 ,jdk1.8

类上面的注解是: @RestController

    @GetMapping("export")    public void exportExcel() {        XSSFWorkbook workbook = placeStatService.exportExcel();        // 设置生成的Excel的文件名,并以中文进行编码        String fileName = null;        try {            fileName = URLEncoder.encode("房间预约使用统计表" + ".xlsx", "utf-8").replaceAll("\\+", "%20");        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        response.setCharacterEncoding("UTF-8");        response.setHeader("Content-type", "application/vnd.ms-excel");        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);        // 响应类型,编码        response.setContentType("application/octet-stream;charset=UTF-8");        try {            // 形成输出流            OutputStream osOut = response.getOutputStream();            // 将指定的字节写入此输出流            workbook.write(osOut);            // 刷新此输出流并强制将所有缓冲的输出字节被写出            osOut.flush();            // 关闭流            osOut.close();            workbook.close();        } catch (IOException e) {            e.printStackTrace();        }    }
@Override    public XSSFWorkbook exportExcel) {        List<RoomOrderDetailModel> roomOrdersList = getRoomOrderList();        XSSFWorkbook data = ExcelUtil.setExcelData(roomOrdersList);        return data;    }
package com.util; import com.curefun.place.model.RoomOrderDetailModel;import org.apache.poi.ss.usermodel.HorizontalAlignment;import org.apache.poi.ss.usermodel.VerticalAlignment;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFCellStyle;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.text.SimpleDateFORMat;import java.util.Date;import java.util.List; public class ExcelUtil {          public static XSSFWorkbook setExcelData(List<RoomOrderDetailModel> orderDetailModels) {        //创建一个book,对应一个Excel文件        XSSFWorkbook workbook = new XSSFWorkbook();        //在book中添加一个sheet,对应Excel文件中的sheet        XSSFSheet sheet = workbook.createSheet("教室预约使用记录");        //设置六列的宽度        sheet.setColumnWidth(0, 4000);        sheet.setColumnWidth(1, 3000);        sheet.setColumnWidth(2, 3800);        sheet.setColumnWidth(3, 2800);        sheet.setColumnWidth(4, 3200);        sheet.setColumnWidth(5, 3600);        sheet.setColumnWidth(6, 2850);         //居中的样式        XSSFCellStyle centerStyle = getCenterStyle(workbook);         // 第三步,在sheet中添加表头第0行        XSSFRow row0 = sheet.createRow(0);        setFirstRow(centerStyle, row0);         int rowNum = 1;        for (RoomOrderDetailModel model : orderDetailModels) {            XSSFRow row = sheet.createRow(rowNum);            row.createCell(0).setCellValue(rowNum);            rowNum++;            row.createCell(1).setCellValue(model.getBuildingName());            row.createCell(2).setCellValue(model.getRoomNo());            row.createCell(3).setCellValue(model.getRoomName());            row.createCell(4).setCellValue(model.getEventType());            row.createCell(5).setCellValue(model.getEventName());            row.createCell(6).setCellValue(model.getUserRealName());        }        return workbook;    }           private static XSSFCellStyle getCenterStyle(XSSFWorkbook workbook) {        XSSFCellStyle cellStyle = workbook.createCellStyle();        //设置水平对齐的样式为居中对齐;        cellStyle.setAlignment(HorizontalAlignment.CENTER);        //垂直居中        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);        return cellStyle;    }          private static void setFirstRow(XSSFCellStyle centerStyle, XSSFRow row) {        XSSFCell cell0 = row.createCell(0);        cell0.setCellValue("序号");        cell0.setCellStyle(centerStyle);        XSSFCell cell1 = row.createCell(1);        cell1.setCellValue("楼栋信息");        cell1.setCellStyle(centerStyle);        XSSFCell cell2 = row.createCell(2);        cell2.setCellValue("房号");        cell2.setCellStyle(centerStyle);        XSSFCell cell3 = row.createCell(3);        cell3.setCellValue("房间名称");        cell3.setCellStyle(centerStyle);        XSSFCell cell4 = row.createCell(4);        cell4.setCellValue("活动类型");        cell4.setCellStyle(centerStyle);        XSSFCell cell5 = row.createCell(5);        cell5.setCellValue("活动名称");        cell5.setCellStyle(centerStyle);        XSSFCell cell6 = row.createCell(6);        cell6.setCellValue("使用人");        cell6.setCellStyle(centerStyle);     } }

其实使用很简单,就是excel的文件名需要进行编码,这个需要注意,其他没啥的了.

前后端分离Excle下载乱码问题

前端:vue+elementUI

后端:SpringCloud

前端请求方式 : ajax请求

this.$.ajax({                url :this.url + "/",                type : 'post',                data : formData,                contentType: false,                processData: false,                xhrFields: {withCredentials: true, responseType:'arraybuffer'},                headers : {'Access-Control-Allow-Origin': '*', "Authorization": this.ajaxRequest.getToken()},                success: function (res, textStatus, request) {                    var downloadFile = document.createElement('a');                    let blob = new Blob([res], {type : "application/vnd.ms-excel;charset=UTF-8"});                    downloadFile.href = window.URL.createObjectURL(blob);                    console.log(request.getResponseHeader('Content-disposition'));                    downloadFile.download =                     decodeURI(request.getResponseHeader('Content-disposition').split('filename=')[1] );                    downloadFile.click();                    window.URL.revokeObjectURL(downloadFile.href);                },                error : function (res) {                  console.log(res)                }        })

后端处理:导出文件处理

// 输出Excel文件OutputStream out = null;out = response.getOutputStream();response.reset();response.setCharacterEncoding("UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF8"));response.setContentType("application/vnd.ms-excel; charset=utf-8");// 输出Excel内容,生成Excel文件wb.write(out);

“Springboot怎么实现前后端分离excel下载”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Springboot怎么实现前后端分离excel下载

本文链接: https://www.lsjlt.com/news/305344.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot实现前后端分离excel下载
    目录Springboot前后端分离excel下载前后端分离Excle下载乱码问题前端请求方式 : ajax请求Springboot前后端分离excel下载 现在公司的技术栈是spri...
    99+
    2024-04-02
  • Springboot怎么实现前后端分离excel下载
    本篇内容介绍了“Springboot怎么实现前后端分离excel下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Springboot前后端...
    99+
    2023-06-25
  • django前后端分离怎么实现
    要实现Django的前后端分离,可以使用Django Rest Framework(DRF)作为后端框架,同时使用一个前端框架(如R...
    99+
    2023-10-09
    django
  • SpringSecurity怎么实现前后端分离
    今天小编给大家分享一下SpringSecurity怎么实现前后端分离的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin...
    99+
    2023-07-05
  • JavaScript怎么实现前后端分离
    本篇内容介绍了“JavaScript怎么实现前后端分离”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 前...
    99+
    2024-04-02
  • SpringBoot前端后端分离之Nginx服务器下载安装过程
    目录SpringBoot前端后端分离之Nginx服务器1、Nginx介绍2、Nginx下载和安装3、Nginx目录结构通过【tree】命令可以查看详细的目录结构4、Nginx常用命令...
    99+
    2022-11-13
    SpringBoot Nginx服务器 SpringBoot前端后端分离
  • 怎么搭建SpringBoot+Vue前后端分离
    本文小编为大家详细介绍“怎么搭建SpringBoot+Vue前后端分离”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么搭建SpringBoot+Vue前后端分离”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-07-05
  • Sping Security前后端分离怎么实现
    本篇内容主要讲解“Sping Security前后端分离怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sping Security前后端分离怎么实现”吧!Spring...
    99+
    2023-07-05
  • SpringBoot前后端分离实现验证码操作
    目录1.SpringBoot版本2.引入依赖3.实现思路新建验证码枚举类定义验证码配置信息定义验证逻辑生成类在控制层上定义验证码生成接口效果体验在前端调用接口1.SpringBoot...
    99+
    2024-04-02
  • SpringBoot+VUE实现前后端分离的实战记录
    一,前端VUE项目 这里使用VUE UI创建一个VUE项目 命令行输入vue ui进入 手动配置项目 选中这三个 点击下一步->点击创建项目 用IDEA打开刚才创建的项目...
    99+
    2024-04-02
  • SpringBoot如何实现前后端分离国际化
    这篇“SpringBoot如何实现前后端分离国际化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot如何实现...
    99+
    2023-07-05
  • SpringBoot+mybatis+Vue如何实现前后端分离项目
    这篇文章主要为大家展示了“SpringBoot+mybatis+Vue如何实现前后端分离项目”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot+mybatis+Vue如何实现前后...
    99+
    2023-06-22
  • SpringBoot前后端分离实现个人博客系统
    目录一、项目简介二、环境介绍三、系统展示四、核心代码展示五、项目总结一、项目简介 本项目使用springboot+mybatis+前端vue,使用前后端分离架构实现的个人博客系统,共...
    99+
    2024-04-02
  • thinkphp怎么实现前后端分离验证码
    这篇文章主要介绍了thinkphp怎么实现前后端分离验证码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇thinkphp怎么实现前后端分离验证码文章都会有所收获,下面我们一起来看看吧。一、验证码的作用在互联网时...
    99+
    2023-07-06
  • SpringSecurity如何实现前后端分离
    这篇文章主要介绍“SpringSecurity如何实现前后端分离”,在日常操作中,相信很多人在SpringSecurity如何实现前后端分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringSecur...
    99+
    2023-07-05
  • SpringBoot+mybatis+Vue实现前后端分离项目的示例
    目录一、SpringBoot环境搭建1、项目的数据库2、项目所需依赖3、application.yml文件4、入口类二、vue实现前后端分离1、前端页面2、springBoot控制层...
    99+
    2024-04-02
  • php前后端分离如何实现
    要实现PHP前后端分离,需要使用以下技术和方法:1. 使用前端框架:选择一个前端框架(如React、Vue.js、Angular等)...
    99+
    2023-10-09
    php
  • thinkphp怎么实现前后端分离的开发
    这篇文章主要讲解了“thinkphp怎么实现前后端分离的开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp怎么实现前后端分离的开发”吧!跨域访问在前后端分离的开发中,前端通常...
    99+
    2023-07-05
  • springboot+VUE前后端分离实现疫情防疫平台JAVA
    目录主要模块:系统主要实现如下:登录之后进入系统首页:目前系统主要功能如下用户管理模块:用户添加、修改、删除、查询等基本操作角色管理模块、通过用户绑定角色、角色控制菜单显示、灵活控制...
    99+
    2024-04-02
  • git前后端分离怎么用
    随着前端技术的繁荣发展,前端领域出现了越来越多的框架和技术,前后端分离也成为了现阶段 web 开发的一种趋势。其中,git 的使用对于前后端分离的管理起到了至关重要的作用。本文将介绍 git 前后端分离的使用方法。一、前后端分离的基本概念前...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作