真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解SpringMVC下如何實現(xiàn)Excel文件上傳下載

小編這次要給大家分享的是詳解SpringMVC下如何實現(xiàn)Excel文件上傳下載,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了筠連免費建站歡迎大家使用!

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

主要依賴的包如下:

 
  commons-io 
  commons-io 
  2.4 
  
  
  commons-fileupload 
  commons-fileupload 
  1.3.1 
  
  
  org.springframework 
  spring-web 
  4.0.0.RELEASE 
  
  
  org.springframework 
  spring-webmvc 
  4.0.0.RELEASE 
  
  
  org.apache.poi 
  poi 
  3.10.1 
  

相關(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 list = new ArrayList(); 
  //這里只處理文件名包括“用戶”的文件,模板使用下載模板 
 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 list = new ArrayList(); 
 UserInfo userInfo = new UserInfo(); 
 userInfo.setPassword("0000"); 
 userInfo.setUserName("sdfas"); 
 list.add(userInfo); 
 list.add(userInfo); 
 list.add(userInfo); 
 list.add(userInfo); 
 Map> map = new HashMap>(); 
 map.put("infoList", list); 
 ExcelView ve = new ExcelView(); 
 return new ModelAndView(ve,map); 
 } 
} 

(二)實體類

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類

這個類在下載時用到,在Spring渲染頁面時使用自定義的View類進行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 model, 
  HSSFWorkbook workbook, HttpServletRequest request, 
  HttpServletResponse response) throws Exception { 
 @SuppressWarnings("unchecked") 
 List list = (List) 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"); 
 //這里對文件名進行編碼,保證下載時漢字顯示正常 
 String fileName = URLEncoder.encode("用戶.xls", "utf-8"); 
 //Content-disposition屬性設(shè)置成以附件方式進行下載 
 response.setHeader("Content-disposition", "attachment;filename=" 
  + fileName); 
 OutputStream os = response.getOutputStream(); 
 workbook.write(os); 
 os.flush(); 
 os.close(); 
 } 
} 

(四)主要配置文件

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

<?xml version="1.0" encoding="UTF-8"?> 
 
 
  
 
  
  
  
  
  
 
  
  
  
  
  
  
  
  
 

(五)測試頁面

 
  
 
 
 

測試下載Excel功能

測試上傳Excel功能

看完這篇關(guān)于詳解SpringMVC下如何實現(xiàn)Excel文件上傳下載的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。


網(wǎng)站名稱:詳解SpringMVC下如何實現(xiàn)Excel文件上傳下載
轉(zhuǎn)載源于:http://weahome.cn/article/gjpgph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部