上傳Excel 解析

	@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;
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章