@RequestMapping(value = "/importExcel.do")
public Map<String,Object> importIncomeExcel(HttpServletResponse response, HttpServletRequest request, MultipartFile file) {
Map<String,Object> map = new HashMap<String,Object>();
Workbook hssfBook = null;
InputStream is ;
try {
is = file.getInputStream();
String fileName = file.getOriginalFilename(); // 文件名
hssfBook = WorkbookFactory.create(is);
Sheet sheet = hssfBook.getSheetAt(0);
// 返回行數
int rowNum = sheet.getLastRowNum();
// 如果只有表頭
if (rowNum == 0) {
map.put("status", "0001");
map.put("msg", "您上傳的excel沒有數據!");
return map;
}
List<String> list = new LinkedList<String>();
Pattern pattern = Pattern.compile("[0-9]*");
for (int i = 0; i <= rowNum; i++) {
if (sheet.getRow(i) == null) {
continue;
}
String v_no = "";
switch (sheet.getRow(i).getCell(0).getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
break;
case Cell.CELL_TYPE_NUMERIC:
v_no = new DecimalFormat("#.##########").format(sheet.getRow(i).getCell(0).getNumericCellValue()); //sheet.getRow(i).getCell(0).getNumericCellValue() + "";
break;
case Cell.CELL_TYPE_STRING:
v_no = sheet.getRow(i).getCell(0).getStringCellValue();
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
case Cell.CELL_TYPE_FORMULA:
break;
default:
v_no = "";
}
if (StringUtils.isEmpty(v_no.trim())) {
continue;
}
v_no = v_no.trim();
if (!pattern.matcher(v_no).matches()) {
continue;
}
list.add(v_no);
}
if (list.size() >= 1000) {
map.put("status", "0001");
map.put("msg", "上傳數量不能超過1000!");
return map;
}
String vs = String.join(",", list);
map.put("status", "0000");
map.put("msg", vs);
} catch (IOException | InvalidFormatException e) {
map.put("status", "0001");
map.put("msg", "導入失敗!");
return map;
}catch (Exception e) {
map.put("status", "0001");
map.put("msg", "導入失敗,請檢查導入文件!!");
return map;
}
return map;
}