基于Spring Mvc实现的Excel文件上传下载示例

  

最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库。因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例。

  

<>强基础框架

  

之前曾经介绍过一个最简单的spring mvc的项目如何搭建,传送门在这里。

  

这次就基于这个工程,继续实现上传下载的小例子。需要做下面的事情:
  

  

1增加索引。html,添加形式提交文件
  

  

2引入commons-fileupload、commons-io jxl等工具包
  

  

3创建上传下载接口
  

  

4注入multipartResolver bean
  

  

5在上传中使用HttpServletRequest获取文件流,通过工作簿进行解析
  

  

6在下载中通过HttpServerResponse返回文件流,实现下载

  

<强>页面

  

页面很简单,其实就是一个表单标签,需要注意的是:

  
      <李>形式中enctype=" multipart/格式”   <李>操作指定访问的url李   <李>输入中需要设置的名字属性,这样后端才能获取到文件对象李   
        & lt;形式作用="形式" action="/上传" method=" POST " enctype=岸嗖糠?格式”比;   祝辞& lt; div class="形式的班级”;   & lt;标签="文件"在上传文件& lt;/label>   & lt;输入类型="文件" id="文件" name="文件"比;   & lt;/div>   & lt;按钮类型=疤峤弧眂lass=癰tn btn-default祝辞提交& lt;/button>   & lt;/form>      

<强>引入commons-fileupload, jxl等工具包

  

涉及的jar包有:
  

  
      <李> commons-fileupload用于获取上传文件   <李> jxl用于解析excel李   
        & lt; !——springframework开始比;   & lt; dependency>   & lt; groupId> org.springframework   & lt; artifactId> spring-webmvc   & lt; version> 4.2.4.RELEASE   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework   & lt; artifactId> spring-context   & lt; version> 4.2.4.RELEASE   & lt;/dependency>   & lt; dependency>   & lt; groupId> javax.servlet   & lt; artifactId> javax.servlet-api   & lt; version> 4.0.0-b01   & lt;/dependency>   & lt; !——https://mvnrepository.com/artifact/commons-io/commons-io——比;   & lt; dependency>   & lt; groupId> commons-io   & lt; artifactId> commons-io   & lt; version> 2.5 & lt;/version>   & lt;/dependency>   & lt; !——https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload——比;   & lt; dependency>   & lt; groupId> commons-fileupload   & lt; artifactId> commons-fileupload   & lt; version> 1.3.2   & lt;/dependency>   & lt; !——https://mvnrepository.com/artifact/jexcelapi/jxl——比;   & lt; dependency>   & lt; groupId> jexcelapi   & lt; artifactId> jxl   & lt; version> 2.6 & lt;/version>   & lt;/dependency>      

<强> Xml的配置

  

在web . xml中需要配置默认的访问页面,因为之前已经设置过拦截的请求是/,因此如果不设置所有的静态页面都会被拦截下来。

        & lt; welcome-file-list>   & lt; welcome-file> index.html   & lt;/welcome-file-list>      

在春天的配置文件中,加入CommonsMultipartResolver的bean。
  

        & lt; bean id=癿ultipartResolver”类=皁rg.springframework.web.multipart.commons.CommonsMultipartResolver”比;   & lt; !——设置最大上传size100MB祝辞   & lt;属性名=癿axUploadSize”比;   & lt; value> 104857600 & lt;/value>   & lt;/property>   & lt;属性名=癿axInMemorySize”比;   & lt; value> 4096 & lt;/value>   & lt;/property>   & lt;/bean>      

<强>上传代码

        @RequestMapping(“上传”)   公共空间上传(HttpServletRequest请求,HttpServletResponse响应)抛出IOException BiffException WriteException {   MultipartHttpServletRequest mRequest=(MultipartHttpServletRequest)请求;   MultipartFile文件=mRequest.getFile(“文件”);   工作簿工作簿=Workbook.getWorkbook (file.getInputStream ());//遍历表页   Arrays.stream (workbook.getSheets ())   .forEach(表→{   int大?sheet.getRows ();   for (int i=0;i

基于Spring Mvc实现的Excel文件上传下载示例