iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot实现前后端分离excel下载
  • 229
分享到

Springboot实现前后端分离excel下载

2024-04-02 19:04:59 229人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot前后端分离excel下载前后端分离Excle下载乱码问题前端请求方式 : ajax请求springboot前后端分离excel下载 现在公司的技术栈是spri

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);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

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

本文链接: https://www.lsjlt.com/news/156999.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
  • SpringBoot前端后端分离之Nginx服务器下载安装过程
    目录SpringBoot前端后端分离之Nginx服务器1、Nginx介绍2、Nginx下载和安装3、Nginx目录结构通过【tree】命令可以查看详细的目录结构4、Nginx常用命令...
    99+
    2022-11-13
    SpringBoot Nginx服务器 SpringBoot前端后端分离
  • 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
  • SpringSecurity如何实现前后端分离
    这篇文章主要介绍“SpringSecurity如何实现前后端分离”,在日常操作中,相信很多人在SpringSecurity如何实现前后端分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringSecur...
    99+
    2023-07-05
  • django前后端分离怎么实现
    要实现Django的前后端分离,可以使用Django Rest Framework(DRF)作为后端框架,同时使用一个前端框架(如R...
    99+
    2023-10-09
    django
  • 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
  • SpringSecurity怎么实现前后端分离
    今天小编给大家分享一下SpringSecurity怎么实现前后端分离的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin...
    99+
    2023-07-05
  • JavaScript怎么实现前后端分离
    本篇内容介绍了“JavaScript怎么实现前后端分离”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 前...
    99+
    2024-04-02
  • springboot+VUE前后端分离实现疫情防疫平台JAVA
    目录主要模块:系统主要实现如下:登录之后进入系统首页:目前系统主要功能如下用户管理模块:用户添加、修改、删除、查询等基本操作角色管理模块、通过用户绑定角色、角色控制菜单显示、灵活控制...
    99+
    2024-04-02
  • thinkPHP5前后端分离
    thinkPHP5前后端分离 环境配置并运行起thinkphp安装小皮面板安装phpstorm配置thinkPHP5将文件放入适当位置修改Nginx配置修改配置和伪静态 跨域前端 ...
    99+
    2023-10-11
    php 前端 nginx 1024程序员节
  • SpringBoot实现前后端分离国际化的示例详解
    目录前言1、设置国际化属性文件2、创建解析器和拦截器3、启动配置文件设置4、控制器示例5、小结前言 Springboot国际化可以帮助使用者在不同语言环境中构建应用程序,这样应用程序...
    99+
    2023-02-22
    SpringBoot实现国际化 SpringBoot国际化
  • 怎么搭建SpringBoot+Vue前后端分离
    本文小编为大家详细介绍“怎么搭建SpringBoot+Vue前后端分离”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么搭建SpringBoot+Vue前后端分离”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-07-05
  • 前后端分离djangorestframe
    关于验证码部分,在我这篇文章里说的挺详细的了:Python高级应用(3)—— 为你的项目添加验证码   这里还是再给一个前后端分离的实例,因为极验官网给的是用session作为验证的,而我们做前后端分离的用的是token,而不是sessi...
    99+
    2023-01-30
    后端 djangorestframe
  • Sping Security前后端分离怎么实现
    本篇内容主要讲解“Sping Security前后端分离怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sping Security前后端分离怎么实现”吧!Spring...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作