SpringMVC下实现Excel文件上传下载

SpringMVC下实现Excel文件上传下载的完整攻略

上传Excel文件

1. 在jsp页面中添加上传表单

表单中的文件上传必须要带上enctype="multipart/form-data"属性。

<form method="POST" action="/upload" enctype="multipart/form-data">
  <input type="file" name="excelFile" />
  <input type="submit" value="上传" />
</form>

2. 编写Controller

@Controller
public class UploadController {

    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public String uploadExcel(@RequestParam("excelFile") MultipartFile file) throws IOException {
        String fileName = file.getOriginalFilename();
        //判断excel文件格式
        if(!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) {
            throw new IllegalArgumentException("错误的文件格式");
        }
        //处理excel文件
        //...
        return "result";
    }
}

@RequestParam注解用来获取上传的文件,MultipartFile类型的file参数表示上传的文件,通过getOriginalFilename()方法获取文件名。

3. 编写MultipartResolver的配置

在 springmvc.xml 中配置 MultipartResolver:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5242880" />
</bean>

maxUploadSize属性表示上传文件的最大大小,单位为字节。这里上传文件大小限制为5MB。

下载Excel文件

1. 编写Controller

@Controller
public class DownloadController {

    @RequestMapping(value="/download", method=RequestMethod.GET)
    public void downloadExcel(HttpServletResponse response) throws IOException {
        String fileName = "example.xlsx";
        //设置response的Content-Disposition值,可以让浏览器弹出下载框
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        //设置response的ContentType值,描述返回内容类型
        response.setContentType("application/vnd.ms-excel");
        //将Excel文件输出到response
        OutputStream outputStream = response.getOutputStream();
        //...
    }
}

@RequestMapping注解指定请求URL为/download,请求方法为GET。通过HttpServletResponse对象设置response的Content-Disposition值和ContentType值,可以让浏览器弹出下载框和下载文件类型为Excel。

2. 编写输出Excel文件的代码

public class ExcelExporter {

    public static void export(List<User> userList, OutputStream out) throws IOException {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("用户列表");
        //创建表头
        XSSFRow headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("序号");
        headerRow.createCell(1).setCellValue("姓名");
        //创建表格内容
        int rowNum = 1;
        for(User user : userList) {
            XSSFRow row = sheet.createRow(rowNum++);
            //设置序号
            row.createCell(0).setCellValue(rowNum);
            //设置姓名
            row.createCell(1).setCellValue(user.getName());
        }
        workbook.write(out);
        out.flush();
    }
}

这里使用了Apache POI库,使用XSSFWorkbook对象创建Excel工作簿,使用XSSFSheet和XSSFRow对象创建Excel表格。最后通过输出流将Excel文件输出到response中。

3. 编写请求下载Excel文件的链接

<a href="/download">下载Excel文件</a>

示例

示例1:上传Excel文件

在jsp页面中添加上传表单,参考上面的步骤1。

编写Controller,参考上面的步骤2。

编写jsp页面显示上传结果,例如result.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传结果</title>
</head>
<body>
    <%if(success) {%>
        <p>上传成功</p>
    <%} else {%>
        <p>上传失败</p>
    <%}%>
</body>
</html>

注意:这里只是演示上传Excel文件的结果页面,success参数需要根据具体上传处理结果设置。

示例2:下载Excel文件

编写Controller,参考上面的步骤1。

编写输出Excel文件的代码,参考上面的步骤2。

编写jsp页面中含有请求下载Excel文件的链接,参考上面的步骤3。点击链接即可下载Excel文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC下实现Excel文件上传下载 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 详解Java如何实现基于Redis的分布式锁

    下面我就来详细讲解一下Java如何实现基于Redis的分布式锁的完整攻略。 什么是分布式锁 分布式锁是在分布式环境下使用的一种锁机制,用于保证在分布式环境下的多个节点对于同一资源的访问的互斥性,从而保证数据的一致性和完整性。通过分布式锁机制,可以实现多个进程或者多个线程之间的同步。 Redis是分布式锁的常见实现方式 Redis是流行的一个开源内存数据存储系…

    Java 2023年5月27日
    00
  • Java统计输入字符的英文字母、空格、数字和其它

    Java 统计输入字符的英文字母、空格、数字和其他字符可以使用字符流的方式读取输入,然后通过判断每个字符的 Unicode code point 值来区分字符类型,再统计出每种类型的字符个数。下面是具体实现的完整攻略。 实现步骤 创建一个字符缓冲区的读取器 BufferedReader,从标准输入读取输入等。 循环读取每个字符,直到读到输入流末尾。 对于每个…

    Java 2023年5月27日
    00
  • Spring Boot超详细分析启动流程

    Spring Boot是基于Spring框架的一种快速开发框架,它通过自动化配置和约定大于配置的方式,可以快速的搭建一个Web应用。 Spring Boot启动流程主要分为三个阶段:准备阶段、上下文创建阶段、启动阶段。 准备阶段 Spring Boot准备阶段主要是读取应用程序的配置文件,获取配置文件中自定义的配置内容,并为后续的启动做好一些准备工作。准备阶…

    Java 2023年5月19日
    00
  • Arthas排查Kubernetes中应用频繁挂掉重启异常

    以下是 Arthas 排查 Kubernetes 中应用频繁挂掉重启异常的完整攻略。 确认场景 首先,需要确认场景。用户反馈应用经常挂掉重启,需要排查问题。该应用运行在 Kubernetes 集群中。需要确定:是所有的节点都有相同的问题,还是只有某个节点有问题。同时,需要定位是否是应用级别的问题。 安装 Arthas 因为需要使用到 Arthas 工具,所以…

    Java 2023年5月20日
    00
  • 正则表达式匹配各种特殊字符

    正则表达式是一种用来匹配字符串的语言,它可以帮助我们在字符串中查找匹配特定模式的文本,包括各种特殊字符。下面是正则表达式匹配特殊字符的完整攻略: 1. 转义特殊字符 正则表达式中有些字符具有特殊的含义,比如”.”、”|”等,如果我们需要匹配这些特殊字符本身,需要在前面加上”\”来进行转义。例如: import re str = "The price…

    Java 2023年5月20日
    00
  • PHP.vs.JAVA

    PHP vs. JAVA 完整攻略 简介 PHP和JAVA都是目前广泛使用的编程语言。它们在某些方面相似,但在其他方面则有很大的不同。这篇文章将讨论PHP和JAVA的区别以及它们各自的优势和缺点。 语法 PHP是一种动态类型语言,不需要声明变量的类型。例如: “`php “` JAVA是一种静态类型语言,每个变量在声明时必须指定它的类型。例如: java…

    Java 2023年6月15日
    00
  • MyBatis-Plus如何最优雅最简洁地完成数据库操作

    MyBatis-Plus 如何最优雅最简洁地完成数据库操作攻略 MyBatis-Plus 是基于 MyBatis 的一款优秀的增强工具库,它可以帮助开发者简化操作、提升开发效率。下面,我们将详细介绍 MyBatis-Plus 如何最优雅最简洁地完成数据库操作。 一、如何引入 MyBatis-Plus 在 pom.xml 中添加如下 Maven 依赖: &lt…

    Java 2023年5月20日
    00
  • Java读取json数据并存入数据库的操作代码

    下面是Java读取Json数据并存入数据库的操作代码的攻略,包含以下四个步骤: 构建Json数据对象 读取Json数据 解析Json数据 将数据存入数据库 下面进行详细讲解。 步骤一:构建Json数据对象 使用Java构建Json对象可以使用json库的JSONObject类来构建。首先需要导入相应的依赖: <dependency> <gr…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部