Springboot中excel文件的上传与下载

Springboot、上传文件、下载文件、hutool导出excel 上传文件 前端:POST方式请求,enctype="multipart/form-data" <form action="/uploadFile" enctype="multipart/form-data" method="post"> <input type="file" name="mypic"> <input type="file" name="photos"> <input type="file" name="photos"&g. 阅读详情

最近开发了一个小项目,因为有前后端交互,便使用springboot进行了开发,其中涉及到excel的下载与上传,现整理出来,下面直接贴代码。

需要引入的jar包

<!--  poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>

1、excel上传jsp页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/xhtml"
>
<head>
    <meta charset="utf-8"/>
    <title>处罚平台订单管理</title>
</head>
<!-- BEGIN BODY -->
<body class="childBody">
<!-- BEGIN CONTAINER -->
<div >
 <form id="file_form" action="http://localhost:7010/basics/bwList/batchImport"
          enctype="multipart/form-data" method="post">
            <input type="file" name="file" id="file_input">
            <input type="submit" value="导入数据" class="file">
        </div>
    </form> 
</div>
</body>
<!-- END BODY -->
</html>

2、后台处理程序

controller层:

/**
 * 上传excel数据
 * @param file
 */
@RequestMapping(value = "/batchImport",method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Result batchImport(@RequestParam(value="file") MultipartFile file){
    return bwListService.batchImport(file ,getCurrentUser());
}

service层:

public Result batchImport(MultipartFile mfile ,User user) {
    Result result=new Result();
    //初始化输入流
    InputStream is = null;
    String fileName=mfile.getOriginalFilename();
    try{
        //根据新建的文件实例化输入流
        is = mfile.getInputStream();
        //根据版本选择创建Workbook的方式
        Workbook wb = null;
        //根据文件名判断文件是2003版本还是2007版本
        if(ExcelUtil.isExcel2007(fileName)){
            wb = new XSSFWorkbook(is);
        }else{
            wb = new HSSFWorkbook(is);
        }
        //根据excel里面的内容读取知识库信息
        String msg=readExcelValue(wb,user);
        if(msg.contains("失败")){
            result.setSuccess(false);
            result.setCode(DatabaseConstants.CONFLICT);
        }
        result.setMsg(msg);
    }catch(Exception e){
        e.printStackTrace();
    } finally{
        if(is !=null)
        {
            try{
                is.close();
            }catch(IOException e){
                is = null;
                e.printStackTrace();
            }
        }
    }
    return result;
}

3、excel下载

controller层:

/**
 *下载excel模板
 * @param response
 */
@RequestMapping(value = "/downLoadExcel",method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public void downLoadExcel(HttpServletResponse response){
    bwListService.downLoadExcel(response);
}

service层:

@Override
public void downLoadExcel(HttpServletResponse response) {
    List<String> header= Arrays.asList("业务类型","场景","维度类型","维度值","名单类型");
    String name="黑白名单";
    ExcelUtil.exportExcel(response,header,name);
}
/**
 * 导出excel
 * @param response
 * @param header
 * @param name
 */
public static void exportExcel(HttpServletResponse response,List<String> header,String name){
    response.reset();
    response.setContentType("application/vnd.ms-excel;charset=utf-8");
    response.setHeader("Content-Disposition", "attachment;filename="+DateUtil.formatLDateTime(new Date())+"_template.xls");
    OutputStream outputStream = null;
    try {
        Workbook workbook=generateWorkbook(name,"XLS",header);
        outputStream = response.getOutputStream();
        workbook.write(response.getOutputStream());
        workbook.close();
        outputStream.flush();
        outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
/**
 * 将数据写入指定path下的Excel文件中
 * @param name sheet名
 * @param style Excel类型
 * @param titles 标题串
 * @return T\F
 */
public static Workbook generateWorkbook(String name, String style, List<String> titles) {
    Workbook workbook;
    if ("XLS".equals(style.toUpperCase())) {
        workbook = new HSSFWorkbook();
    } else {
        workbook = new XSSFWorkbook();
    }
    // 生成一个表格
    Sheet sheet = workbook.createSheet(name);
    // 设置表格默认列宽度为15个字节
    sheet.setDefaultColumnWidth((short) 36);
    // 生成样式
    Map<String, CellStyle> styles = createStyles(workbook);
    /*
     * 创建标题行
     */
    Row row = sheet.createRow(0);
    for (int i = 0; i < titles.size(); i++) {
        Cell cell = row.createCell(i);
        cell.setCellStyle(styles.get("header"));
        cell.setCellValue(titles.get(i));
    }

    int totalRows=10000;
    for(int j=0;j<totalRows;j++){
        row = sheet.createRow(j+1);
        for (int k=0;k<titles.size();k++){
            Cell cell = row.createCell(k);
            cell.setCellStyle(styles.get("cell"));
        }
    }
  
    return workbook;
}




Spring Boot+poi实现excel文件上传、下载 Spring Boot+poi实现excel文件上传、下载 最近为了实现excel文件上传与下载找了很多的代码,可总有一些写的不是很完整而且用的方法也特别多(感受到了代码的强大),所以我决定综合资料自己做出来后也保存一份下来(亲测有效????) 1.poi介绍 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功... 阅读详情

相关推荐

springboot下载上传excel文件

下载静态模板 在resource目录下创建模板template/subject123.xlsx 引入poi依赖文件 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> &lt..

william88128的博客 298

springboot下载excel文件

sprongboot下载excel文件

qq_40263124的博客 2316

使用Springboot实现excel的导入导出

在Spring Boot中实现Excel的导入导出可以通过POI库来实现,POI是一个开源的Java库,用于处理Microsoft Office格式文件,包括Excel。一个简单的示例,演示如何在Spring Boot项目中使用POI来实现Excel的导入导出功能。 导出Excel 准备数据: 首先,你需要有一份员工数据,可以是从数据库中查询得到的,也可以是已有的数据集合。 创建Excel文件: 使用POI库创建一个新的Excel文件。在文件中创建一个工作表,并在第一行创建标题行,包含员工的姓名、年龄和部门等信息。 填充数据: 遍历你的员工数据集合,将每个员工的信息写入到工作表的每一行中。 设置响应头: 设置响应的Content-Type为application/vnd.ms-excel,并设置Content-Disposition为attachment; filename=employees.xlsx,这样浏览器就会将响应解释为要下载的Excel文件。 将Excel写入响应流: 使用response.getOutputStream()获取输出流,然后将工作簿写入到输出流中.....

Springboot 后端下载excel文件

springboot后端下载excel文件代码

侠~~的博客 1517

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 334

电动转向系统 TAS 传感器

靠扭杆变形测力气,用霍尔效应算角度,借 ECU 给电机发指令。它就像 EPS 系统的 "神经末梢",把驾驶员的操作意图转化成电信号,再通过电机变成实实在在的助力,让我们开车既省力又安全。下次转动方向盘时,不妨想想这个藏在转向柱里的 "小传感器"—— 正是它的精准感知,才有了每一次顺畅的转向体验。

weixin_59825476的博客 4283

SpringBoot中 Excel的下载

1.实体类实现io流 2.controller实现excel的方法

weixin_43189971的博客 1894

寒武纪AI芯片业务解析:从云端到边缘,如何布局智能计算未来?

本文深入解析了寒武纪在AI芯片领域的业务布局,重点探讨了其从云端到边缘的智能计算战略。文章分析了寒武纪云端“思元”系列芯片如何作为数据中心的高性能计算基石,以及思元220等边缘芯片如何满足碎片化场景的低功耗实时处理需求。同时,也阐述了其IP授权业务模式与技术生态构建,揭示了寒武纪在激烈市场竞争中,通过软硬件全栈方案布局智能计算未来的核心路径。

weixin_29271053的博客 403

文件以excel格式下载功能实现(SpringBoot+Vue)

文件以excel格式下载功能实现(SpringBoot+Vue)实现,实用小demo

weixin_52536274的博客 1881

Python 爬虫:获取网页数据的 5 种方法

requests:适用于简单的静态网页抓取,易于使用。requestslxml:适合需要高效解析大规模网页内容的情况,支持 XPath 和 CSS 选择器。Selenium:适用于动态网页(JavaScript 渲染)的抓取,模拟浏览器行为获取动态数据。Scrapy:强大的爬虫框架,适合大规模的网页抓取任务,支持异步请求和高级功能。PyQuery:基于 jQuery 语法,适合快速开发,提供简洁的 CSS 选择器语法。

想看什么文章都可以私信给我,综合性博客。 5513

IEC61850实战:从ICD文件解析到模型构建

本文深入解析IEC61850标准中的ICD文件结构,从Header、IED到DataTypeTemplates部分,详细介绍了如何构建电力自动化设备的数据模型。通过实战案例展示ICD文件的创建过程,并分享常见问题的调试技巧,帮助工程师快速掌握IEC61850建模方法,提升电力系统自动化项目的实施效率。

weixin_26841743的博客 496

Spring boot 实现EXCEL文件/其他文件的上传与下载

EXCEL文件的上传: @Override public List<XxxUnit> readDataFromFile(MultipartFile unitListFile) { ExcelReadUtil<XxxUnit> reader = new ExcelReadUtil<>(); List<XxxUnit> xxxUnitList = null; try { xxxUni

我的心曾悲伤7次 3216

AD9361数字调制入门:从IQ调制原理到动手实现第一个ASK信号(Vivado工程详解)

本文详细介绍了如何使用AD9361射频收发器实现ASK数字调制,从IQ调制原理到Vivado工程实现。通过Verilog代码示例和FPGA架构设计,帮助开发者理解纯逻辑实现数字调制解调的关键技术,特别适合软件无线电(SDR)初学者入门实践。

weixin_29158047的博客 374

用vue+springboot下载和上传excel文件

需求 前端发送下载请求 后端接收请求,从数据库拿出数据,写成excel格式,传给前端 前端拿到excel进行下载 在excel中增加数据 将新的excel上传给服务器 环境 前端vue+ElementUI 后端springboot+mybatisplus+mysql 后端生成excel用到org.apache.poi 下载 html <el-button type="primary"...

linyue1qaz的博客 1684

DMA 定制固件教程:小白跟做即得单人固件,超详细纯喂饭教程,100% 成功秘籍!FPGA仿真1:1、中断逻辑和TLP核心都在。

DMA 定制固件教程 小白跟着操作做可以做出的单人固件。DMA仿真技术io、中断逻辑,从零仿真。图文链接教程:https://docs.qq.com/doc/DQ01lVGtHelROVHNv

qq_15741349的博客 3万+

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 688

springboot文件上传+下载+解析“Excel“+生成“Excel”

工作上我们经常会遇到,数据导入数据库,或者报表导出。这期,我就到大家用springboot实现“文件上传+下载+解析"xls"文件”。 一、文件上传 创建一个 LogService @Service public class LogService { public ResultVo upLogLoad(MultipartFile file)throws Exception{ if(file==null|| file.isEmpty()){ return

LGangJin的博客 6294

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

vue + element-ui + springboot上传和下载excel文件

前端用vue一、上传。

weixin_68266674的博客 898

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

springboot上传下载删除excel文件

springboot上传下载删除excel文件 在本地准备好excel文件 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </

qq_39990869的博客 467

Spring Boot 3 中实现文件上传、下载以及 Excel 导入导出

Spring Boot 3 文件操作指南:使用 Apache POI 和 Spring Web MVC 实现文件上传下载及 Excel 导入导出。通过 SpringDoc OpenAPI 3 提供 API 文档支持,包含生产级配置和详细注释。关键实现包括:Maven 依赖配置(Spring Web、Apache POI、SpringDoc)、文件大小限制设置、文件控制器(上传/下载逻辑)以及 OpenAPI 注解规范。支持.xlsx格式处理,采用UUID生成唯一文件名确保安全,提供完整的异常处理和响应封装。

python15397的博客 1257

SpringBoot用easyExcel实现excel文件上传至数据库与下载数据库数据为Excel

@SpringBoot实现Excel文件上传至数据库与下载数据库数据为Excel 这里是整合poi实现的,后来发现poi有一些缺陷,但这些缺陷被阿里的EasyExcel解决了,于是采用了第二种。 一、第一种(不推荐,推荐下方第二种使用easyExcel) 首先创建一个SpringBoot项目,pom.xml中加入操作Excel需要的jar包 <dependency> <groupId>org.apache.poi</groupId> <artifa

洛水逆风向西 1380

Spring Boot 3 文件上传下载与 Excel 导入导出完整指南

本文介绍了Spring Boot 3中实现文件上传下载与Excel导入导出的完整方案。主要内容包括:1)项目依赖配置,添加Spring Boot Web、Hutool工具包和EasyExcel等必要依赖;2)应用配置文件设置,配置文件上传大小限制和存储目录;3)统一响应结果封装类设计;4)文件上传下载控制器实现,包含基础文件操作和Excel处理功能。该方案提供了完整的文件管理解决方案,可满足常见业务需求。

python15397的博客 1202

spring boot 开发篇四、Excel文件上传、下载

一、Excel文件上传 1、添加apache.poi 依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> 2、接收文件实现方法 C

远近 355

springboot实现excel文件的上传和下载

我发现我好笨啊,搞了这么久。。。 首先pom文件导入如下: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependen...

weixin_40593587的博客 3708

SpringBoot+LayUI+poi 实现Excel文件上传下载

SpringBoot+LayUI+poi 实现Excel文件上传下载 1.前端 更多样式及参数可参考官网:https://www.layui.com/doc/modules/upload.html <div class="content_mid100per"> <div id="layout"> <form class="layui-form" enctype="multipart/form-data"> <div class="layui-

qq_44572962的博客 1363

Java:SpringBoot使用EasyExcel实现Excel文件的导出下载和上传导入功能

SpringBoot使用EasyExcel实现Excel文件的导出下载和上传导入功能。依赖 pom.xml。

彭世瑜的博客 2876
上一篇: Flink架构、原理与部署测试详解
xiaoping2017
博客等级 码龄9年 4粉丝 3原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值