說明:
上傳multipartFile時,無法直接轉為File去讀取excel文件內容,因為為了安全,不可能知道客戶端文件絕對路徑,解決方法為在服務器端生成一個File文件,然后再讀取這個服務器的文件內容保存到數據庫
controller
/**
* 導入
* @param id
* @return
*/
@RequestMapping(value = "/uploadCustList",method = RequestMethod.POST)
@ResponseBody
public ResultModel uploadCustList(@RequestParam String flag, String masterDate, @RequestParam MultipartFile[] myfiles, HttpServletRequest request) {
log.info(this.getClass().getName()+".uploadCustList.start");
ResultModel result=new ResultModel();
StringBuffer buffer=new StringBuffer();
String originalFilename="";//上傳的文件的文件名
String suffix="";
//校驗上傳文件上否為空
if(null==myfiles || myfiles.length<=0){
result.setResultMsg(Constants.SERVICE_ERROR_CODE);
result.setResultMsg(Constants.FILE_NULL_ERROR);
return result;
}
for (MultipartFile myfile : myfiles) {
if (!myfile.isEmpty()) {
//獲得文件后綴名
suffix = myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf("."));
//獲得文件源名
originalFilename=myfile.getOriginalFilename();
log.info(this.getClass().getName()+".uploadCustList.originalFilename="+originalFilename);
//強轉為File
String path=request.getSession().getServletContext().getRealPath("/upload/");
suffix = myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf("."));
String fileName = UUID.randomUUID().toString()+ suffix;
File f=new File(path,fileName);
try {
myfile.transferTo(f);
Map<String,Object> map=custemerListService.saveExcelAndConverToText(f);
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//檢查文件格式
if(null!=buffer && buffer.length()>0){
result.setResultMsg(Constants.SERVICE_ERROR_CODE);
result.setResultMsg(buffer.toString());
return result;
}
return result;
}
service
/**
* 讀取excel文件內容保存到數據庫,並將文件轉為txt格式發送到sftp
*/
@Override
public Map<String, Object> saveExcelAndConverToText(File file) {
Map<String,Object> resultMap=new HashMap<String,Object>();
//獲取excel文件
XSSFWorkbook xssfWorkbook;
try {
xssfWorkbook = new XSSFWorkbook(new FileInputStream(file));
for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
if (xssfSheet == null) {
continue;
}
// Read the Row
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow != null) {
//student = new Student();
XSSFCell no = xssfRow.getCell(0);
XSSFCell name = xssfRow.getCell(1);
XSSFCell age = xssfRow.getCell(2);
XSSFCell score = xssfRow.getCell(3);
// student.setNo(getValue(no));
// student.setName(getValue(name));
// student.setAge(getValue(age));
// student.setScore(Float.valueOf(getValue(score)));
// list.add(student);
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//轉換文件格式
// converToText(file);
//讀取文件內容保存到數據庫
//readExcel();
//發送文件到sftp
//sendToSFTP();
return resultMap;
}
