最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC下實(shí)現(xiàn)Excel文件上傳下載

 更新時(shí)間:2020年05月30日 16:21:49   作者:qiubabin  
這篇文章主要為大家詳細(xì)介紹了SpringMVC下實(shí)現(xiàn)Excel文件上傳下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在實(shí)際應(yīng)用中,經(jīng)常會(huì)遇到上傳Excel或者下載Excel的情況,比如導(dǎo)入數(shù)據(jù)、下載統(tǒng)計(jì)數(shù)據(jù)等等場(chǎng)景。針對(duì)這個(gè)問題,我寫了個(gè)基于SpringMVC的簡(jiǎn)單上傳下載示例,其中Excel的處理使用Apache的POI組件。

主要依賴的包如下:

<dependency> 
  <groupId>commons-io</groupId> 
  <artifactId>commons-io</artifactId> 
  <version>2.4</version> 
 </dependency> 
 <dependency> 
  <groupId>commons-fileupload</groupId> 
  <artifactId>commons-fileupload</artifactId> 
  <version>1.3.1</version> 
 </dependency> 
 <dependency> 
  <groupId>org.springframework</groupId> 
  <artifactId>spring-web</artifactId> 
  <version>4.0.0.RELEASE</version> 
 </dependency> 
 <dependency> 
  <groupId>org.springframework</groupId> 
  <artifactId>spring-webmvc</artifactId> 
  <version>4.0.0.RELEASE</version> 
 </dependency> 
 <dependency> 
  <groupId>org.apache.poi</groupId> 
  <artifactId>poi</artifactId> 
  <version>3.10.1</version> 
 </dependency> 

相關(guān)處理類:

(一)Controller類

package com.research.spring.controller; 
 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.multipart.MultipartFile; 
import org.springframework.web.servlet.ModelAndView; 
 
import com.research.spring.model.UserInfo; 
import com.research.spring.view.ExcelView; 
 
@Controller 
@RequestMapping("/file") 
public class FileController { 
 
 /** 
 * Excel文件上傳處理 
 * @param file 
 * @return 
 */ 
 @RequestMapping("/upload") 
 public ModelAndView uploadExcel(@RequestParam("file") MultipartFile file){ 
 List<UserInfo> list = new ArrayList<UserInfo>(); 
  //這里只處理文件名包括“用戶”的文件,模板使用下載模板 
 if( file.getOriginalFilename().contains("用戶") ){ 
  try { 
  Workbook wb = new HSSFWorkbook(file.getInputStream()); 
  Sheet sheet = wb.getSheetAt(0); 
  for( int i = 1; i <= sheet.getLastRowNum(); i++ ){ 
   Row row = sheet.getRow(i); 
   UserInfo info = new UserInfo(); 
   info.setUserName(row.getCell(0).getStringCellValue()); 
   info.setPassword(row.getCell(1).getStringCellValue()); 
   list.add(info); 
  } 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } 
 } 
 ModelAndView mav = new ModelAndView("content"); 
 mav.addObject("content",list.toString()); 
 return mav; 
 } 
 
 /** 
 * Excel文件下載處理 
 */ 
 @RequestMapping("/download") 
 public ModelAndView downloanExcel(){ 
 List<UserInfo> list = new ArrayList<UserInfo>(); 
 UserInfo userInfo = new UserInfo(); 
 userInfo.setPassword("0000"); 
 userInfo.setUserName("sdfas"); 
 list.add(userInfo); 
 list.add(userInfo); 
 list.add(userInfo); 
 list.add(userInfo); 
 Map<String,List<UserInfo>> map = new HashMap<String, List<UserInfo>>(); 
 map.put("infoList", list); 
 ExcelView ve = new ExcelView(); 
 return new ModelAndView(ve,map); 
 } 
} 

(二)實(shí)體類

package com.research.spring.model; 
 
public class UserInfo { 
 
 private String userName; 
 
 private String password; 
 
 public String getUserName() { 
 return userName; 
 } 
 
 public void setUserName(String userName) { 
 this.userName = userName; 
 } 
 
 public String getPassword() { 
 return password; 
 } 
 
 public void setPassword(String password) { 
 this.password = password; 
 } 
 
 @Override 
 public String toString() { 
 return "UserInfo [userName=" + userName + ", password=" + password 
  + "]"; 
 } 
} 

(三)View類

這個(gè)類在下載時(shí)用到,在Spring渲染頁(yè)面時(shí)使用自定義的View類進(jìn)行Excel的相關(guān)處理。

package com.research.spring.view; 
 
import java.io.OutputStream; 
import java.net.URLEncoder; 
import java.util.List; 
import java.util.Map; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.springframework.web.servlet.view.document.AbstractExcelView; 
 
import com.research.spring.model.UserInfo; 
 
/** 
 * 下載Excel視圖 
 * 
 * @author wdmcygah 
 * 
 */ 
public class ExcelView extends AbstractExcelView { 
 
 @Override 
 protected void buildExcelDocument(Map<String, Object> model, 
  HSSFWorkbook workbook, HttpServletRequest request, 
  HttpServletResponse response) throws Exception { 
 @SuppressWarnings("unchecked") 
 List<UserInfo> list = (List<UserInfo>) model.get("infoList"); 
 if (list != null && list.size() != 0) { 
  int len = list.size(); 
  Sheet sheet = workbook.createSheet(); 
  // 第一行文字說明 
  Row row = sheet.createRow(0); 
  Cell cell = row.createCell(0, Cell.CELL_TYPE_STRING); 
  cell.setCellValue("用戶名"); 
  cell = row.createCell(1, Cell.CELL_TYPE_STRING); 
  cell.setCellValue("密碼"); 
 
  //下面是具體內(nèi)容 
  for (int i = 0; i < len; i++) { 
  row = sheet.createRow(i + 1); 
  cell = row.createCell(0, Cell.CELL_TYPE_STRING); 
  cell.setCellValue(list.get(i).getUserName()); 
  cell = row.createCell(1, Cell.CELL_TYPE_STRING); 
  cell.setCellValue(list.get(i).getPassword()); 
  } 
 } 
 
 response.setContentType("application/vnd.ms-excel"); 
 response.setCharacterEncoding("utf-8"); 
 //這里對(duì)文件名進(jìn)行編碼,保證下載時(shí)漢字顯示正常 
 String fileName = URLEncoder.encode("用戶.xls", "utf-8"); 
 //Content-disposition屬性設(shè)置成以附件方式進(jìn)行下載 
 response.setHeader("Content-disposition", "attachment;filename=" 
  + fileName); 
 OutputStream os = response.getOutputStream(); 
 workbook.write(os); 
 os.flush(); 
 os.close(); 
 } 
} 

(四)主要配置文件

上傳文件時(shí)需要在配置文件中配置MultipartResolver類,配置后Spring會(huì)自動(dòng)將文件傳成MultipartFile對(duì)象,然后就可以進(jìn)行相應(yīng)的處理。示例看Controller類。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
 xmlns:context="http://www.springframework.org/schema/context" 
 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 http://www.springframework.org/schema/context 
 http://www.springframework.org/schema/context/spring-context-3.0.xsd 
 http://www.springframework.org/schema/mvc 
 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
 http://www.springframework.org/schema/util 
 http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 
 
 <context:component-scan base-package="com.research" /> 
 
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
 <property name="prefix" value="/WEB-INF/" /> 
 <property name="suffix" value=".jsp" /> 
 </bean> 
 
 <!-- 上傳文件解析器配置 --> 
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
 <property name="defaultEncoding" value="UTF-8"></property> 
 <!-- 上傳文件的大小限制 ,單位是字節(jié)--> 
 <property name="maxUploadSize" value="5242880000000"></property> 
 <!-- 上傳文件的臨時(shí)路徑,上傳完成后會(huì)自動(dòng)刪除 --> 
 <property name="uploadTempDir" value="upload/temp"></property> 
 </bean> 
</beans> 

(五)測(cè)試頁(yè)面

<html> 
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 
<h3>測(cè)試下載Excel功能</h3> 
<form action="file/download.htm" enctype="multipart/form-data" method="post"> 
 <input type="submit" value="下載Excel"></input> 
</form> 
 
<h3>測(cè)試上傳Excel功能</h3> 
<form action="file/upload.htm" enctype="multipart/form-data" method="post"> 
 <input type="file" name="file"></input> 
 <input type="submit" value="上傳Excel"></input> 
</form> 
</body> 
</html> 

 如果想看完整源碼,可以到我的Github倉(cāng)庫(kù)查看。 其中,上傳文件只處理符合下載模板的文件。若要處理其它文件需要自實(shí)現(xiàn)。代碼測(cè)試通過無誤。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí),導(dǎo)致ApplicationRunner無效解決

    SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí),導(dǎo)致ApplicationRunner無效解決

    這篇文章主要介紹了SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí),導(dǎo)致ApplicationRunner無效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    這篇文章主要介紹了mybatis的test坑及解決(不等于‘‘ 且 不等于0),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring源碼解析之事務(wù)傳播特性

    Spring源碼解析之事務(wù)傳播特性

    今天帶大家分析Spring源碼,文中對(duì)Spring事務(wù)傳播特性做了非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Spring MVC異常處理機(jī)制示例詳解

    Spring MVC異常處理機(jī)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC異常處理機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring MVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Kryo框架使用方法代碼示例

    Kryo框架使用方法代碼示例

    這篇文章主要介紹了Kryo框架的相關(guān)內(nèi)容,文中向大家分享了Kryo框架使用方法代碼示例,小編覺得挺不錯(cuò)的,希望能給大家一個(gè)參考。
    2017-10-10
  • 使用Java的Spring框架編寫第一個(gè)程序Hellow world

    使用Java的Spring框架編寫第一個(gè)程序Hellow world

    這篇文章主要介紹了Java的Spring框架并用其開始編寫第一個(gè)程序Hellow world的方法,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Java的類型擦除式泛型詳解

    Java的類型擦除式泛型詳解

    Java語言中的泛型只存在于程序源碼之中,在編譯后的字節(jié)碼文件里,則全部泛型都會(huì)被替換為原來的原始類型(Raw Type),并且會(huì)在相應(yīng)的地方插入強(qiáng)制轉(zhuǎn)型的代碼。這篇文章主要介紹了Java的類型擦除式泛型,需要的朋友可以參考下
    2021-08-08
  • JAVA導(dǎo)出CSV文件實(shí)例教程

    JAVA導(dǎo)出CSV文件實(shí)例教程

    這篇文章主要介紹了如何用JAVA導(dǎo)出CSV文件,文中案例代碼十分詳細(xì),對(duì)大家的學(xué)習(xí)有所幫助,感興趣的朋友可以了解下
    2020-06-06
  • 使用springboot的jar包能夠以service方式啟動(dòng)

    使用springboot的jar包能夠以service方式啟動(dòng)

    這篇文章主要介紹了使用springboot的jar包能夠以service方式啟動(dòng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Springboot基于websocket實(shí)現(xiàn)簡(jiǎn)單在線聊天功能

    Springboot基于websocket實(shí)現(xiàn)簡(jiǎn)單在線聊天功能

    這篇文章主要介紹了Springboot基于websocket實(shí)現(xiàn)簡(jiǎn)單在線聊天功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

九龙城区| 潜江市| 乳山市| 乌拉特中旗| 历史| 泰来县| 汝阳县| 奉节县| 乌鲁木齐县| 辉县市| 许昌县| 浏阳市| 宁明县| 阿瓦提县| 西乌珠穆沁旗| 武汉市| 罗田县| 安顺市| 桂林市| 秦安县| 开江县| 郑州市| 淅川县| 青神县| 来凤县| 安平县| 瓮安县| 静安区| 南投市| 镇雄县| 高淳县| 安康市| 顺昌县| 江城| 道孚县| 民县| 邹城市| 疏勒县| 元阳县| 四子王旗| 昭平县|