首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用React+ SpringBoot下载EXCEL文件

React是一个用于构建用户界面的JavaScript库,而Spring Boot是一个用于构建Java应用程序的框架。结合React和Spring Boot可以实现前后端分离的开发模式。

要使用React和Spring Boot下载Excel文件,可以按照以下步骤进行:

  1. 前端开发:
    • 使用React创建一个前端项目。
    • 在React项目中,可以使用axios或fetch等工具发送HTTP请求到后端。
    • 创建一个按钮或其他触发下载的元素,并为其添加一个点击事件处理函数。
  • 后端开发:
    • 使用Spring Boot创建一个后端项目。
    • 在后端项目中,创建一个Controller类,用于处理前端发送的请求。
    • 在Controller类中,编写一个方法,用于生成Excel文件并将其作为响应返回给前端。
  • 文件生成:
    • 在后端方法中,使用Apache POI或其他Excel处理库来生成Excel文件。
    • 将生成的Excel文件保存到服务器的临时目录中。
  • 文件下载:
    • 在后端方法中,将生成的Excel文件通过HTTP响应返回给前端。
    • 设置响应头的Content-Disposition字段,指定文件名和下载方式。

以下是一个简单的示例代码:

前端代码(使用React):

代码语言:txt
复制
import React from 'react';
import axios from 'axios';

const downloadExcel = () => {
  axios.get('/api/download/excel', { responseType: 'blob' })
    .then(response => {
      const url = window.URL.createObjectURL(new Blob([response.data]));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', 'example.xlsx');
      document.body.appendChild(link);
      link.click();
    })
    .catch(error => {
      console.error('Error downloading Excel file:', error);
    });
};

const App = () => {
  return (
    <div>
      <button onClick={downloadExcel}>Download Excel</button>
    </div>
  );
};

export default App;

后端代码(使用Spring Boot):

代码语言:txt
复制
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

@RestController
public class ExcelController {

    @GetMapping(value = "/api/download/excel", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    public ResponseEntity<byte[]> downloadExcel() throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello, Excel!");

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        workbook.write(outputStream);
        workbook.close();

        HttpHeaders headers = new HttpHeaders();
        headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=example.xlsx");

        return ResponseEntity.ok()
                .headers(headers)
                .contentType(MediaType.APPLICATION_OCTET_STREAM)
                .body(outputStream.toByteArray());
    }
}

这个示例代码中,前端部分使用React创建了一个简单的页面,点击按钮会发送GET请求到后端的/api/download/excel接口。后端部分使用Spring Boot创建了一个Controller类,处理该接口的请求,生成一个包含"Hello, Excel!"的Excel文件,并将其作为响应返回给前端。前端通过创建一个临时的下载链接来触发文件的下载。

对于这个需求,腾讯云的相关产品和服务推荐如下:

  • 前端开发:腾讯云提供了云开发(CloudBase)服务,可以快速搭建前端应用,并提供了丰富的云端能力支持。详情请参考腾讯云云开发
  • 后端开发:腾讯云提供了云函数(Cloud Function)和云托管(Cloud Run)等服务,可以方便地部署和运行后端应用。详情请参考腾讯云云函数腾讯云云托管
  • 文件存储:腾讯云提供了对象存储(COS)服务,可以用于存储和管理生成的Excel文件。详情请参考腾讯云对象存储
  • 网络安全:腾讯云提供了Web应用防火墙(WAF)和DDoS防护等服务,可以保护应用免受网络攻击。详情请参考腾讯云Web应用防火墙腾讯云DDoS防护

以上是一个简单的示例和推荐,实际应用中可能涉及到更多的细节和需求,具体的解决方案需要根据实际情况进行选择和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Springboot导出Excel下载

    --数据导出excel--> <!...导出工具类 ExcelExport2.export(response,usersMapper.selectAll(),arr); } } 三、工具类 3.1文件导出excel...工具类 大体思路是传入一个需要导出的数据集合,获取该对象类,然后遍历集合,使用下面的类操作工具类,通过反射获取对象类的属性的get方法,然后将数据对象的值取出来放到excel里 package com.huang.util.excelExport...导出工具类,依赖于ClassUtil工具类 */ public final class ExcelExport2 { /** * 将传入的数据导出excel表并下载 *...实际上,针对这个需求:如果是需要导出大量数据而没有排版要求的话,可以用EasyExcel,顺带还能把Excel导入给解决了;如果是需要按照复杂模板导出的话,可以使用jxls,或者大佬进一步封装的jxlss

    97720

    文件下载,excel导出

    实际开发中的文件下载excel导出 在实际的开发过程中,我们经常会遇到这种需求,导出文件或者下载文件的时候,弹出保存弹框然后指定文件名或者路径然后再点保存的这种, 一般网上看到的excel文件到处,基本上看到的都是指定下载路径的...iframe.style.display = 'none'; document.body.appendChild(iframe); } //拼接路径,并调用相关下载的接口...,"联系人","金额","负责人","周期"}; //创建文档对象 HSSFWorkbook wb = new HSSFWorkbook(); // 建立新的sheet对象(excel...这里需要注意的事返回的数据类型是指定的 return new ResponseEntity(os.toByteArray(),httpHeaders,HttpStatus.OK); } 类似的,对于图片文件或者文本文件...,因为浏览器默认都是直接打开的,我们需要将文件进行字节话,然后按照指定的类型返回,亦可以对文件进行下载功能

    1.5K31

    SpringBoot文件上传、下载、删除

    配置 在application.properties 中增加上传文件存放的路径配置 #文件上传目录 file.upload.url= E:/test controller 层 上传文件下载文件都比较简单...文件下载 其实文件下载,不太建议用接口做,因为文件下载一般都是下载一些静态文件,我们可以先将文件处理好,然后通过Nginx 服务下载静态文件,这样速度会快很多。但是这里我们还是写一下。...file.exists()){ return "下载文件不存在"; } response.reset(); response.setContentType..."; } return "下载成功"; } 代码也很简单,就是根据文件名判断是否存在文件,不存在就提示没有文件,存在就将文件下载下来。...response设置返回文件的格式,以文件流的方式返回,采用utf-8 字符集,设置下载后的文件名。然后就是以文件流的方式下载文件了。 如果文件存在,会直接下载,不会提示下载成功或者失败。

    1.3K20

    axios post 请求下载 excel 文件

    需求 技术栈如下 前端 vue+element 后端 php 框架 laravel 需要通过 axios 发送 post 请求下载 excel 文件 服务器的 excel 文件生成工具用的是 laravel...扩展包 Laravel Excel 默认情况下,axios 是不会自动下载服务端返回的 excel 文件的,有些同学直接绕过 axios,用 a 链接请求文件,虽然能下载,但这样有安全隐患。...谁都可以下载文件,在权限认证方面会有些麻烦,即使能实现权限控制,也是蹩脚的实现方式 解决 万能的 stackoverflow 给出了标准答案 代码如下: 前端: this....$http.post('/export-excel', {}, { responseType: 'blob' }).then(function (response) { const url =...文档 return Excel::download(new ExcelExport(), "导出报表.xlsx"); }

    3.6K20

    SpringBoot结合easyexcel处理Excel文件

    文/朱季谦假如有这样一个需求,每天需要读取以下表头的Excel文件,统计文件里击中黑名单的比例,该文件is_blacklist列的1表示击中了黑名单,0表示未击中黑名单。... 3.1.1 二、定义一个接收Excel文件表头列数据的Java Bean——@Data @NoArgsConstructor...三、继承EasyExcel 框架中的 AnalysisEventListener 接口的类 BlackTitleListener,用于监听并处理 Excel 文件中的数据行。...new BlackTitleListener();//读取 Excel 文件的第一个 sheet 中的数据,并将其转换成 BlackTitle 对象,最终存储在 listener 对象中。...方法去读取Excel文件,通过 .head(BlackTitle.class) 设置表头信息,即将表头字段映射到BlackTitle类里属性。

    82250

    django下载excel使用djan

    django下载Excel使用django-excel插件   由于目前的资料多是使用pandas或xlwt库实现的。...django-excel是一款支持上传和下载excel文件的插件,并可以将excel文件以网页的形式展现出来,也可以将数据存入数据库。...如果想要使用字典生成excel文件,则需return django_excel.make_response_from_dict(字典名, 文件类型, status=200)。...如果想要使用数据库的表(单张)生成excel文件,则需return django_excel.make_response_from_a_table(表名, 文件类型, status=200)   如果想要使用数据库的表...(多张)生成excel文件,则需return django_excel.make_response_from_tables(表名列表, 文件类型status=200)   如果想要使用查询集合生成excel

    1.4K10
    领券