Spring接口返回的类型是json格式,里面字段对应base64格式的excel文件

使用场景:需要对前端导入的excel文件中的内容进行验证,如期中有验证失败的信息需要转成excel反馈给前端,用户下载查看信息,并且前端需要获取json返回的状态,给用户提示失败或者成功,所以需要导出json的同时返回excel

 废话不多说,直接上代码

后端代码:

    @ApiOperation(value = "接口返回的类型是json格式,里面字段对应base64格式的excel文件", notes = "接口返回的类型是json格式,里面字段对应base64格式的excel文")@RequestMapping(value = "exportDemo")public Map exportDemo() throws Exception {Map map = new HashMap();map.put("success", false);map.put("message", "导入失败");HSSFWorkbook errWorkbook = new HSSFWorkbook(); //创建ExcelHSSFSheet sheet = errWorkbook.createSheet("Sheet1");//创建SheetHSSFRow T_row = sheet.createRow(0);//创建一行表头T_row.createCell(0).setCellValue("必填,学号");//设置表头列名T_row.createCell(1).setCellValue("学生姓名");//设置表头列名T_row.createCell(2).setCellValue("培养单位");//设置表头列名T_row.createCell(3).setCellValue("必填,主导师工号");//设置表头列名T_row.createCell(4).setCellValue("主导师姓名");//设置表头列名T_row.createCell(5).setCellValue("联合导师工号(如有)");//设置表头列名T_row.createCell(6).setCellValue("联合导师姓名(如有)");//设置表头列名T_row.createCell(7).setCellValue("错误信息");//设置表头列名HSSFCellStyle style = errWorkbook.createCellStyle();style.setDataFormat(errWorkbook.createDataFormat().getFormat("@")); // 设置为文本格式for (int i = 0; i < T_row.getPhysicalNumberOfCells(); i++) {sheet.setDefaultColumnStyle(i, style);}for (Cell cell : T_row) {cell.setCellStyle(style);cell.setCellType(CellType.STRING);}ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();// 将EXCEL文件写进流内errWorkbook.write(byteArrayOutputStream);byte[] bytes = byteArrayOutputStream.toByteArray();String base64ExlCode = Base64Utils.encodeToString(bytes);map.put("excel",base64ExlCode);return map;} 

前端代码1:

        , exportDemo: function () {var self = thisvar url = baseUrl + self.QUERY_URL + '/exportDemo';//定义参数var myform = new FormData();$.ajax({url: url,data: myform,dataType: "json",type: 'post',async: true,//重要,必须设置 falsecontentType: false,//重要,必须设置 falseprocessData: false,beforeSend: function () {self.$Spin.show();},complete: function () {},success: function (res) {alert(res.message)//下载文件var blob = self.dataURLtoBlob(res.excel);var downloadUrl = window.URL.createObjectURL(blob);var anchor = document.createElement("a");anchor.href = downloadUrl;anchor.download = decodeURI("导入错误.xls");anchor.click();}, error: function (data) {self.$Spin.hide();self.$Message.error({content: data.responseText, duration: 5, background: true});}})}

前端代码2:

        // 核心 将base64的字符串转为文件流, dataURLtoBlob: function (base64Str) {var bstr = atob(base64Str);var n = bstr.length;var u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}// 下载的是excel格式的文件return new Blob([u8arr], {type: "application/vnd.ms-excel"});//其他类型:// 'doc' => 'application/msword',// 'bin' => 'application/octet-stream',// 'exe' => 'application/octet-stream',// 'so' => 'application/octet-stream',// 'dll' => 'application/octet-stream',// 'pdf' => 'application/pdf',// 'ai' => 'application/postscript',// 'xls' => 'application/vnd.ms-excel',// 'ppt' => 'application/vnd.ms-powerpoint',// 'dir' => 'application/x-director',// 'js' => 'application/x-javascript',// 'swf' => 'application/x-shockwave-flash',// 'xhtml' => 'application/xhtml+xml',// 'xht' => 'application/xhtml+xml',// 'zip' => 'application/zip',// 'mid' => 'audio/midi',// 'midi' => 'audio/midi',// 'mp3' => 'audio/mpeg',// 'rm' => 'audio/x-pn-realaudio',// 'rpm' => 'audio/x-pn-realaudio-plugin',// 'wav' => 'audio/x-wav',// 'bmp' => 'image/bmp',// 'gif' => 'image/gif',// 'jpeg' => 'image/jpeg',// 'jpg' => 'image/jpeg',// 'png' => 'image/png',// 'css' => 'text/css',// 'html' => 'text/html',// 'htm' => 'text/html',// 'txt' => 'text/plain',// 'xsl' => 'text/xml',// 'xml' => 'text/xml',// 'mpeg' => 'video/mpeg',// 'mpg' => 'video/mpeg',// 'avi' => 'video/x-msvideo',// 'movie' => 'video/x-sgi-movie',}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建局域网git裸仓库

创建局域网git裸仓库 不说废话&#xff0c;直接上脚本 #!/bin/bash# 获取脚本所在的目录 script_path"$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"if [ $# -eq 0 ]; thenecho "请提供仓库的名称作为参数。"exit 1 …

Python发送邮件

Python发送邮件 一、概念二、邮件服务器设置三、发送邮件流程3.1 登录邮箱3.2 准备数据3.3 发送邮件 四、实现4.1 发送文本4.2 发送html4.3 发送图片4.4 发送文件 一、概念 SMTP(Simple Mail Transfer Protocol)&#xff0c;即简单邮件传输协议,它是一组用于由源地址到目的地址…

自定义 spring-boot组件自动注入starter

1&#xff1a;创建maven项目 2&#xff1a;pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati…

Jenkins + gitlab 持续集成和持续部署的学习笔记

1. Jenkins 介绍 软件开发生命周期(SLDC, Software Development Life Cycle)&#xff1a;它集合了计划、开发、测试、部署的集合。 软件开发瀑布模型 软件的敏捷开发 1.1 持续集成 持续集成 (Continuous integration 简称 CI): 指的是频繁的将代码集成到主干。 持续集成的流…

全光谱护眼灯哪个牌子好?全光谱备考护眼台灯推荐

什么是全光谱&#xff1f;全光谱指的是光谱中包含紫外光、可见光、红外光的光谱曲线&#xff0c;并且在可见光部分中红绿蓝的比例与阳光近似&#xff0c;显色指数接近于100的光谱。太阳光的光谱可以称作全光谱&#xff0c;太阳光的色温是随着四季和早晚时间变化而变化&#xff…

SD 一次性客户地址如何打开

一次性客户 写入后在哪里看具体数据呢 在转到->抬头->合作伙伴 双击Y0

Ubuntu系统的基础操作和使用

一、Ubuntu系统介绍 1. Ubuntu系统介绍 Ubuntu是一种流行的开源Linux操作系统&#xff0c;它以稳定性和易用性而闻名。由Canonical公司维护&#xff0c;Ubuntu提供了广泛的软件支持和社区参与。 2. Ubuntu与其他Linux发行版区别 2.1 当前的Linux发行版本 当前主要的Linux发…

基于EasyDarwin、ffmpeg实现rtsp推流

目录 1 安装EasyDarwin 2 编译安装ffmpeg 3 启动EasyDarwin 4 ffmepg推流 5 百度网盘备份 某项目中测试时需要用到推流&#xff0c;于是用EasyDarwin、ffmpeg实现了RTSP推流&#xff0c;简单记录下过程&#xff0c; 1 安装EasyDarwin 这个可以去官网下载&#xff1a;Eas…

大模型互相“薅羊毛”背后,行业基本操作,规范化势在必行

最近&#xff0c;字节跳动被曝调用 OpenAI API 接口训练大模型的争议&#xff0c;以及谷歌大模型 Gemini 被曝使用百度文心一言进行中文语料训练等事件&#xff0c;在行业里引发了不小的关注和讨论。 不明真相的网友们一边热情吃瓜&#xff0c;一边也在感叹 AI 大厂之间互相“…

【论文解读】Efficient SAO Coding Algorithm for x265 Encoder

时间&#xff1a;2015年 级别&#xff1a;IEEE 机构&#xff1a;上海交通大学 摘要 x265是一款开源的HEVC编码器&#xff0c;采用了多种优化技术&#xff0c;具有较快的编码速度和优良的编码性能。作为HEVC的一项关键技术&#xff0c;x265还采用了样本自适应偏移(sample adap…

工作流引擎的架构设计与对比

所谓工作流引擎是指 workflow 作为应用系统的一部分&#xff0c;并为之提供对各应用系统有决定作用的&#xff0c;根据角色、分工和条件的不同决定信息传递路由、内容等级 等核心解决方案。工作流引擎可以灵活地配置工作流程&#xff0c;并且可以自动化的根据配置进行状态变更和…

WebRPC开发基础流程

一、WebRTC 使用入门 WebRTC&#xff08;全称 Web Real-Time Communication&#xff09;&#xff0c;即网页即时通信。 是一个支持网页浏览器进行实时语音对话或视频对话的技术方案。从前端技术开发的视角来看&#xff0c;是一组可调用的API标准。 WebRTC API 官网&#xff1…

【P2PTransportChannel 】connetion 切换1

同 P2PTransportChannel ,MockIceTransport 也是一个ICE 通道的实现一个ice传输通道的示例:MockIceTransport #ifndef P2P_BASE_MOCK_ICE_TRANSPORT_H_ #define P2P_BASE_MOCK_ICE_TRANSPORT_H_#include <memory> #include

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟

在现代 IT 基础设施的动态环境中&#xff0c;高效的数据收集和分析至关重要。 Elastic Agent 是 Elastic Stack 的关键组件&#xff0c;通过促进将数据无缝摄取到 Elasticsearch 中&#xff0c;在此过程中发挥着至关重要的作用。 然而&#xff0c;显着影响此过程整体有效性的关…

金融CRM有用吗?金融行业CRM有哪些功能

市场形式波诡云谲&#xff0c;金融行业也面临着资源体系分散、竞争力后继不足、未知风险无法规避等问题。金融企业该如何解决这些问题&#xff0c;或许可以了解一下CRM管理系统&#xff0c;和其提供的金融行业CRM解决方案。 金融行业是银行业、保险业、信托业、证券业和租赁业…

Windows 终端与 PowerShell:它们有何不同?

如果您使用的是 Windows 11 或 Windows 10&#xff0c;你会发现预安装了 PowerShell 和 Windows 终端。两者都是命令行界面&#xff0c;允许您输入文本命令来执行各种任务&#xff0c;但它们有何不同&#xff1f; PowerShell 是对命令提示符的改进 Windows 11 中的 Windows Po…

基于SSM的双减后初小教育课外学习生活活动平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

odoo17核心1——概述

odoo17发布了&#xff0c;如果说odoo16是一个承前启后的版本&#xff0c;那么odoo17则完全抛弃了历史包袱&#xff0c;全面简化了前端代码&#xff0c;是一个里程碑式的版本。 在学习odoo的过程中&#xff0c;结合对源码的阅读&#xff0c;对odoo的设计哲学有了一些自己的感悟…

3.CentOS7关闭防火墙与SELINUX

Centos7关闭防火墙与SELINUX 1.关闭 SELinux 检查 SELinux 的状态 sestatus 修改配置文件 vim /etc/selinux/config 将SELINUX改为SELINUXdisabled重启 reboot 2.关闭防火墙 查看防火墙状态 firewall-cmd --state 如果返回 not running就表示已关闭 停止并禁用 firewa…

分享一些实用工具和学习网站

1 前言 虽然已经工作过几年的时间了&#xff0c;但是学习的脚步是不能停止的&#xff0c;对于学习&#xff0c;特别是自学&#xff0c;善于搜索网上的一些资源来辅助&#xff0c;还是非常有必要的&#xff0c;下面我就把这几年私藏的各种资源&#xff0c;网站贡献出来给你们。…