깜놀하는 해므찌로

Egov Spring Controller Java 엑셀 업로드 메소드 예시 본문

IT

Egov Spring Controller Java 엑셀 업로드 메소드 예시

agnusdei1207 2022. 9. 17. 09:07
반응형
SMALL
/* 엑셀 업로드 */
@ResponseBody
@RequestMapping(folderPath+"saveExcel.json")
public ModelAndView COUNTRY_01_excelProc(@ModelAttribute("searchVO") searchVO searchVO, ModelMap model , HttpServletRequest request) throws Exception {

    List<searchVO> list = null;
    FileVO fileVO = new FileVO(); 

    int total = 0;// 총건수 
    int cnt   = 0;// 성공건수 
    int fail  = 0;// 실패건수 

    String filePath   = "";// 파일경로
    String atchFileId = "";// 첨부파일ID
    String fileSn  = "";// 첨부파일순번
    String fileEncodingNm = "";// 변환된 파일이름 (ex : ATCH201712321310)
    String fileExtnnNm = "";// 확장자

    atchFileId = StringUtil.nullString(searchVO.getAtchFileId());
    fileSn   = "0";

    // 첨부파일ID, 순번 셋팅
    fileVO.setAtchFileId(atchFileId);
    fileVO.setFileSn(fileSn);
    // 첨부파일정보 조회
    FileVO fvo = fileMngService.selectFileInf(fileVO);

    // 첨부파일이 있다면 
    if(fvo != null){

        fileEncodingNm  = fvo.getStreFileNm(); //변환파일명
        fileExtnnNm = fvo.getFileExtsn();  //파일확장자

        // 파일경로
        filePath = fvo.getFileStreCours() + "/" + fileEncodingNm;
        // 확장자 : 엑셀97-2003 버전
        if("xls".equals(fileExtnnNm)){
            model.addAttribute("error", "엑셀파일확장자가 xlsx이 아닙니다.\n엑셀2007 이상 버전을 사용해주세요.");
            // 확장자 : 엑셀2007 이상 버전  
        }else if("xlsx".equals(fileExtnnNm)){
            System.out.println("파일 경로 확인 : " + filePath);
            list = this.xlsxReadList(filePath);
        }else{
            model.addAttribute("error", "확장자가 엑셀파일이 아닙니다.");
        }

        // 엑셀에서 추출한 데이터 DB 저장
        if(list != null){
            total = list.size();// 총건수
            cnt   = 0;// 성공건수
            fail  = 0;// 실패건수

            SearchVO inData = new SearchVO();
            inData.setExcelList(list);
            try{    
                cmmnService.insertContents(inData, PROGRAM_ID + ".excelInsertContents");
                cnt++;
            }catch(FileNotFoundException fe){
                fail++;
                fe.printStackTrace();
            } 
        } 

    }else{
        model.addAttribute("error", "파일이 없습니다.");
    }

    model.addAttribute("total", total);
    model.addAttribute("cnt", cnt);
    model.addAttribute("fail", fail);

return new ModelAndView(ajaxView,model);

}

1. 통신 상태를 알려주기 위해 @ResponseBody 어노테이션 사용

2. 엑셀 버전 xls / xlsx 유효성 검사

반응형
LIST