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应用程序在运行时,需要加载大量的类,这些类通常是由JDK自带的类库,以及我们自己编写的类组成的。为了保证程序可以正常运行,Java虚拟机需要通过类加载器来将这些类加载到内存中。而应用程序类加载器就是其中一种类加载器,其主要作用是从特定路径加载class文件到内存中,是类加载器中最常用的一种。 使用攻略: 首先需要了解应用程序…

    Java 2023年5月10日
    00
  • Redis Plus 来了,性能炸裂!

    来源:https://developer.aliyun.com/article/705239 1 什么是KeyDB? KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如…

    Java 2023年4月25日
    00
  • Android图片的Base64编码与解码及解码Base64图片方法

    针对这个话题,以下是详细讲解“Android图片的Base64编码与解码及解码Base64图片方法”的完整攻略。 什么是Base64编码 Base64编码是一种用于将二进制数据转为文本数据的编码方式,主要用途是将数据在网络上进行传输,例如在网页中展示图片等。 如何在Android中进行Base64编码 在Android中,我们可以使用Base64类进行Bas…

    Java 2023年5月20日
    00
  • Spring Security认证器实现过程详解

    Spring Security认证器实现过程详解 什么是Spring Security认证器 Spring Security是一个基于安全框架的安全性认证和授权框架,也是Spring框架中的一个子项目。它负责管理我们应用程序中的用户、角色和权限,并为它们提供安全访问。 Spring Security身份认证的实现过程主要涉及到AuthenticationMa…

    Java 2023年5月20日
    00
  • JavaWeb Servlet中Filter过滤器的详解

    JavaWeb Servlet中Filter过滤器的详解 一、什么是Filter过滤器 Filter,即过滤器,是Servlet规范中一个重要的组件,用于对Servlet容器的请求和响应进行过滤和修改。它能够拦截所有的用户请求,对请求参数、头部信息等进行检查,还可以修改请求的目标和响应内容。 二、Filter过滤器的应用场景 在JavaWeb开发中,通常会出…

    Java 2023年6月15日
    00
  • MyBatis的五种批量查询实例总结

    MyBatis的五种批量查询实例总结 1. 需要批量查询的场景 在实际的开发中,我们常常会遇到需要批量查询数据的场景,如查询一个部门下所有的员工信息、查询某个账户下所有的交易明细信息等等。这些场景中,我们需要查询的数据量比较大,单次查询的效率较低,因此需要采用批量查询的方式来提高查询效率。 2. MyBatis的五种批量查询实例 下面我们介绍MyBatis的…

    Java 2023年5月20日
    00
  • Java MongoDB数据库连接方法梳理

    Java MongoDB数据库连接方法梳理 简介 MongoDB是一种开源、高性能、非关系型文档型数据库。由于其高效性和强大的原生查询语言,越来越多的企业和开发者开始选择MongoDB作为他们的首选数据库。本篇文章将介绍如何在Java应用程序中连接MongoDB数据库。 步骤 1. 安装MongoDB 在连接MongoDB之前,我们需要先安装MongoDB。…

    Java 2023年5月20日
    00
  • Java执行cmd命令的举例与注意事项

    Java执行cmd命令的举例与注意事项 在Java程序中,执行cmd命令是常见的需求之一。本攻略将介绍如何在Java中执行cmd命令,并列出注意事项。 执行cmd命令的方法 Java中可以通过Runtime.getRuntime().exec()方法来执行cmd命令。该方法返回一个Process对象,通过该对象可以获得命令的执行结果。下面是执行cmd命令的模…

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