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计算两个日期之前的天数实例(排除节假日和周末)

    下面是详细讲解计算两个日期之间天数的攻略: 1. 计算基本思路 首先,获取两个日期的时间戳,可使用 java.util.Date 类的 getTime() 方法将日期转换为 Timestamp 形式。 然后,将两个日期之间的时间戳相减,得到两个日期之间的毫秒数差。 最后,将毫秒数差转换为天数,并排除掉节假日和周末。 2. 排除节假日和周末 排除掉节假日和周末…

    Java 2023年5月20日
    00
  • JS+CSS实现的日本门户网站经典选项卡导航效果

    实现日本门户网站经典选项卡导航效果,需要使用JS和CSS两种语言。 下面是一些步骤和示例说明: 步骤一:HTML结构 首先,在 HTML 中创建导航选项卡的外层容器,再在容器内创建导航选项卡的标题与内容。 示例: <div class="tab-container"> <ul class="tab-title-…

    Java 2023年6月16日
    00
  • Spring Security表单配置过程分步讲解

    下面是关于Spring Security表单配置过程分步讲解的攻略,包含以下几个步骤: 引入Spring Security依赖 要使用Spring Security,需要在项目中引入相应的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframewor…

    Java 2023年5月20日
    00
  • Java读取properties文件之中文乱码问题及解决

    为了更好地回答这个问题,我先介绍一下什么是 properties 文件。 Properties 文件是 Java 配置文件的一种常见格式,多用于存储项目的配置信息,如数据库连接的 URL、用户名和密码、邮件服务器的信息等等。它的格式如下所示: key1=value1 key2=value2 key3=value3 其中,key 和 value 分别表示属性的…

    Java 2023年5月20日
    00
  • 什么是线程间通信问题?

    以下是关于线程间通信问题的完整使用攻略: 线程间通信问题 线程间通信问题是指多个线程之间共享资源时,由于访问顺序不确定或者访问时间不同步等原因,导致程序出现错误或者不稳定的情况。线程间通信问题主要有以下几个方面: 1. 竞争和冲突 在多线程编程中,如果多个线程同时访问共享资源,就会出现竞争和冲突的情况,导致程序的不稳定和不可预测性。例如,多个线程同时对同一个…

    Java 2023年5月12日
    00
  • Java 图表类库详解

    Java 图表类库详解 Java 图表类库可用于在 Java 编程语言环境下创建各种类型的图表,包括线图、柱状图、饼图、散点图等。本文将详细介绍 Java 图表类库的使用方法及示例。 选择合适的图表类库 Java 图表类库有多种选择,包括 JFreeChart、Chart.js、JChart2D、Plotly 等。在选择时需要考虑自己的需求和项目要求,例如支…

    Java 2023年5月26日
    00
  • Java中创建对象的5种方式总结

    Java中创建对象的5种方式总结 Java中创建对象有5种方式,分别是:使用new关键字、使用Class类的newInstance()方法、使用Constructor类的newInstance()方法、使用clone()方法、使用反序列化。 使用new关键字 使用new关键字可以直接创建一个对象,其语法格式如下: // 创建类的对象 ClassName ob…

    Java 2023年5月26日
    00
  • 带你玩转Kafka之初步使用

    带你玩转Kafka之初步使用 什么是Kafka? Kafka是一个由Apache开发的分布式流处理平台。它由多个Broker服务器节点组成,可用于消息发布和订阅,以及处理海量数据流。 安装Kafka Kafka可在Linux、Windows和Mac等操作系统上运行。可从官方网站https://kafka.apache.org/downloads下载二进制包。…

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