原文鏈接:MultipartFile轉File/HSSFWorkbook
在業務開發中遇見,通過上傳Excel文件,解析並生成對應的數據。
1、什麼是HttpServletRequest?
答:HttpServletResponse繼承了ServletResponse接口,並提供了與Http協議有關的方法。
2、什麼是MultipartFile?
答:MultipartFile是spring類型,代表HTML中form data方式上傳的文件,包含二進制數據+文件名稱。
3、引入文件包
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
4、轉換類型
1、HttpServletRequest轉MultipartHttpServletRequest
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
2、MultipartHttpServletRequest轉Map<String, MultipartFile>
Map<String, MultipartFile>fileMap =multipartRequest.getFileMap();
3、fileMap轉MultipartFile
for(Map.Entry<String, MultipartFile> entity :fileMap.entrySet()){
MultipartFile multipartFile = entity.getValue();
}
4、MultipartFile轉file File
file =new File(multipartFile.getOriginalFilename());
5、MultipartFile轉HSSFWorkbook HSSFWorkbook
workbook =new HSSFWorkbook(new POIFSFileSystem(multipartFile.getInputStream()));
以下連續記錄數據HttpServletRequest轉換爲HSSFWorkbook(excel對象)
@SuppressWarnings("unchecked")
@RequestMapping(params = "importExcel", method = RequestMethod.POST)
@ResponseBody
public AjaxJson importExcel(HttpServletRequest request) {
AjaxJson j = new AjaxJson();
//request前端傳回對象轉換爲 MultipartHttpServletRequest
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//multipartRequest對象轉換爲Map<String, MultipartFile>的MultipartFile對象fileMap
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//做單次循環,將MultipartFile對象解析出
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
//獲取爲MultipartFile對象multipartFile
MultipartFile multipartFile = entity.getValue();
//直接將MultipartFile強制轉換爲File文件
File file = new File(multipartFile.getOriginalFilename());
try {
//將MultipartFile轉換爲HSSFWorkbook對象
HSSFWorkbook workbook = new HSSFWorkbook(new POIFSFileSystem(multipartFile.getInputStream()));
//這裏獲取了workbook對象便可對其進行excel操作。
} catch (IOException e) {
//
}
}
return j;
}
面向開發過程,記錄學習之路。