가져 오기 및 내보내기 (간단한 방법 ******************************************* *****************************************)

1. 가져 오기

    @RequestMapping (값 = "importExcelPartInfo.do"= RequestMethod.POST 방법은 헤더 = { "= 프로그램 / HTML 적용" })
     공공  공극 importExcelPartInfo (HttpServletRequest의 요청을 RequestPart (값 = "파일")의 MultipartFile [] uploadfiles @ HttpServletResponse를 응답) 가 발생 예외 { 
            
            지도 <문자열, 개체> 여기서 = DataConvertHelper.getRequestParam (요청); 
            UploadResult uploadResult = 새로운 UploadResult (); 
            ListResult <지도 <문자열, 객체 >> 결과 = 새로운 ListResult <> ();
        시도 { 
            문자열 newpath를= DataConvertHelper.getImportPath ( "MP / iwms /" ); 
            문자열 realPath . = request.getSession () getServletContext () getRealPath ( "") +. newpath를; 
            파일 DIR = 새로운 파일 (realPath);
            만약 (! {dir.isDirectory ()) 
                dir.mkdirs (); 
            } 
            문자열 화일 형식 = "XLSX | XLS |" ;
            부울 FileFlag는 = 거짓 ;
            에 대한 {: (uploadfiles의 MultipartFile의 MultipartFile)
                 경우 (fileformat.indexOf (FilenameUtils.getExtension ( 
                        . multipartFile.getOriginalFilename ())와 toLowerCase ()
                         + "|") < {) 
                    FileFlag = true로 ;
                     BREAK ; 
                } 
            } 
            IF (FileFlag) { 
                uploadResult.setResult ( "3." ); 
                uploadResult.setMsg는 ( "형식 오류가 다시 입력하세요"); // 파일 형식을 업로드하는 것은 않습니다 
                ; returnHtml (uploadResult, 응답)
                 반환 ; 
            } 

            에 대한 {: (UploadFiles의 MultipartFile의 MultipartFile) 
                문자열 파일 이름 =multipartFile.getOriginalFilename (); 
                SAVEFILE 파일 = 새로운 파일 (realPath, 파일 이름); 
                multipartFile.transferTo (SAVEFILE); 

                문자열 [] COLUMNNAMES = { "PART_NO", "FORM_PART_NO", "PART_NAME_CN", "PART_NAME_EN", "PART_UNIT", "MAN_MODEL", "PART_USE", "IS_RETORACTIVITY", "IS_ENABLE를" }; 
                문자열 파일 이름 = realPath + Win32 시스템 +의 파일 이름; 
                목록 <지도 <문자열, 객체 >> 데이터 목록 = 새로운 ExcelHelper <> () readDataFromExcel (파일 이름, COLUMNNAMES, 1. ); 
                
                경우 (데이터 목록!//partInformationBIZ.importExcelPartInfo (데이터 목록, 임); 
                    uploadResult.setMsg (result.getMsg ()); 
                    uploadResult.setResult (result.getResult ()); 
                } 
                경우 (uploadResult.getResult (같음) ( "0". )) { 

                    된 JSONObject OBJ = JSONObject.fromObject (uploadResult.getMsg ()); 
                    산부인과 객체 ( "행"= obj.get을 ); 
                    목록 <지도 <문자열, 객체 >> = (목록 <지도 <문자열, 객체 >> 업로드 ) 산부인과를; 
                    
//                     문자열 orgchange = "";
                    문자열 [] columnNames2 = { "PART_NO", "FORM_PART_NO", "PART_NAME_CN", "PART_NAME_EN", "PART_UNIT", "MAN_MODEL", "PART_USE", "IS_RETORACTIVITY", "IS_ENABLE", "IS_TRUE" } 
                    문자열 [] titleNames은 = { "부품 번호", "부품 디스플레이 번호", "중국 이름", "영어", "측정 단위", "공장 모델", "사용 지침", "플라스틱 부품의 회복 여부", "사용할 수 있습니다." "오류"    }; 

                    // 경로가 있는지 여부를 확인, 그것은 만들 존재하지 않습니다
 //                     (realpath) = 새로운 새로운 파일 파일 디렉토리를;
 //                     만약에 (! dir.isDirectory ())
 //                         dir.mkdirs를 ();

                    SHEETNAME 문자열 = "데이터 보 정부에 정보" , 
                    문자열 filename2 = realpath Win32 시스템 + + + SHEETNAME ".XLSX";
                    새로운 ExcelHelper <> () .writeDataToExcel (fileName2, SHEETNAME, 
                            titleNames, columnNames2 업로드); 
                    
                    문자열 IP = request.getLocalAddr ();
                    INT의 포트 = request.getLocalPort (); 
                    에서 System.out.println ( "포트 :"+ 포트); 
                    문자열 downloadUrl = "/"+ newPath.replace (Win32 시스템, "/" )
                             + "/"+ SHEETNAME + ".XLSX" ;
                //     downloadUrl = request.getScheme () + ": // "+ IP + ":"
                //     downloadUrl = downloadUrl; 
                    uploadResult.setDownloadUrl (downloadUrl) 
                    returnHtml (uploadResult 응답); 
                } 
                
            } 
        } 캐치 (예외 E) { 
            logger.error ( "이상 정보"+ e.getMessage (), E) 
            uploadResult. setResult (Globals.FAIL_CODE) 
            uploadResult.setMsg ( "가져 오기 실패"); // 가져 오기가 실패 

        } 
        returnHtml (uploadResult, 응답); 
        반환 ; 
    }

(2) returnHtml () 메소드

    전용  공간 returnHtml (UploadResult uploadResult, 
            HttpServletResponse를 응답) { 
        시도 { 
            된 JSONObject 된 JSONObject = JSONObject.fromObject (uploadResult)를; 
            문자열 jsonStr = jsonObject.toString (); 

            response.setContentType ( "텍스트 / HTML; 문자셋 = UTF-8" ); 
            response.setHeader ( "에서 Pragma", "아니오 - 캐시" ); 
            response.setHeader ( "캐시 제어", "노 캐시" ); 
            response.setDateHeader는 ( "만료", 0 ); 

            . response.getWriter () (jsonStr) 쓰기;
            response.getWriter () 플러시 ().;
            response.getWriter () 가까이 ().; 
        } 캐치 (예외 전자) { 
            e.printStackTrace (); 
        } 
    }

 (3) 구문 분석 파일을 엑셀

    / ** 
     * 구문 분석 엑셀 파일 
     * 
     * @param의 파일 이름은 
     * Excel 파일 이름은 
     * 파라미터 : COLUMNNAMES는 
     *지도의 키 값으로 필드 이름 
     * @param 시작 인덱스 
     * 데이터 시트 출발 선이 지수는 0에서 시작 
     * @return 목록 < 지도 <문자열, 객체 >> 데이터 
     * @throws 예외
      * / 
    공개 목록 <매핑 <문자열, 객체 >> readDataFromExcel (파일 이름 문자열, 문자열 []를 COLUMNNAMES가 int로 시작 인덱스)를
             발생 예외 { 
        목록 <매핑 <문자열, 객체 >> 데이터 = 새로운 새로운ArrayList를 <지도 <문자열, 객체 >> (); 

        FileInputStream의 FIS = 새로운 FileInputStream의 (파일 이름); 

        통합 된 통합 = WorkbookFactory.create (FIS); 

        시트 시트 = ;
        INT sheetNum = workbook.getNumberOfSheets ();
        위한 ( int로 I = 0; I <sheetNum; 내가 ++ ) { 
            시트 = workbook.getSheetAt (I); 
            data.addAll (readSheet (시트 COLUMNNAMES, 시작 인덱스)); 
        } 

        리턴 데이터; 
    }

(4)

     * 시트 해결, 목록 <지도 <문자열, 객체 >> 반환 입력 데이터
      * 
     * @param 시트
      *             시트 개체
      *의 @param COLUMNNAMES
      *             필드 이름, 맵의 키 값으로
      * @param 시작 인덱스
      *             시작 읽기 데이터 행
      * @ 반환 목록 <지도 <문자열, 객체 >> 데이터
      * /
     개인 (시트 시트 문자열 []를 COLUMNNAMES 목록 <지도 <문자열, 객체 >> readSheet을 int로 {시작 인덱스)를 
        목록 <지도 <문자열, 객체 >> MAPLIST = 새로운 새로운 ArrayList를 <지도 <문자열, 객체 >> ();

        행 행= ;
        INT ROWNUM = sheet.getPhysicalNumberOfRows ();
        대한 ( INT I = 시작 인덱스; 나는 <ROWNUM 내가 ++ ) { 
            지도 <문자열, 개체>지도 =  의 HashMap <문자열, 개체> ();  = sheet.getRow (I);
             ( INT의 J = 0; J <columnNames.length, J ++ ) { 
                map.put (COLUMNNAMES [J], readCellValue (row.getCell (j))); 
            } 
            mapList.add (MAP); 
        } 

        반환 mapList을; 
    }

(5)

    / ** 
     * 격자 엑셀 값 판독 
     * 
     * @param의 C의 
     엑셀 * 격자 객체 
     * @ 반환 데이터 객체
      * / 
    @SuppressWarnings ( "중단" )
     개별 개체 readCellValue (셀 C)을 { 
         DecimalFormat의 DF = 새로운 새 에 DecimalFormat을 ( "0" )   
         IF (C == ) {
              '' ; 
        } 다른 {
             스위치 (c.getCellType ()) {
             케이스 Cell.CELL_TYPE_BLANK :
                반환 "" ;
            사례 Cell.CELL_TYPE_BOOLEAN :
                 반환 c.getBooleanCellValue를 ();
            사례 Cell.CELL_TYPE_ERROR :
                 반환 c.getErrorCellValue를 ();
            사례 Cell.CELL_TYPE_FORMULA :
                 반환 c.getCellFormula를 ();
            사례 Cell.CELL_TYPE_NUMERIC :
                 // . 문자열 DATAFORMAT = c.getCellStyle () getDataFormatString (); 
                경우 (DateUtil.isCellDateFormatted (c)) { 
                    SimpleDateFormat의 자위대; //. 만 셀 또는 날짜의 정수, 형식 일치하지 않는 데이터 가져 오기가 포함 된 파일을 가져올 때 331844 관계 관리 서비스 기능, 그렇지 않으면 00:00:00 CST 2016년 1월 17일 태양입니다 
                    ; 날짜 c.getDateCellValue D = () // 디스플레이에 직접 반환. 17 중부 표준시 00시 00분 0초 2,016 월 태양 
                    IF (d.getHours () == 0 && d.getMinutes () == 0 && d.getSeconds () == 0 ) { 
                        SDF = 새로운 새 SimpleDateFormat의가 ( " "를 YYYY-MM-DD ) 
                    } 다른 { 
                        SDF = 새로운 새 mm : SimpleDateFormat의 (이하"MM-DD HH-YYYY의 SS " ) 
                    } 
                                        
                    리턴 sdf.format (D)                  
               } 다른 {
                    df.format (c.getNumericCellValue ()); // 数字型
               } 
                
            의 경우 Cell.CELL_TYPE_STRING :
                 반환 ) (c.getStringCellValue을; 
            } 
            반환 + : "알 수없는 세포 유형" ) (c.getCellType을; 
        } 
    }
     * 가져 오기 주소 가져 오기 파일
      * 경로 = MP / DFF / 모듈
      * @ 반환 
     * @author 오일은 A
      * /
     공공  정적 문자열 getImportPath (문자열 경로) {
         반환 경로 + "importDffService"+ Win32 시스템
                 + DateTimeHelper.getCurrentTime ( " YYYYMMDD " )
                 +를 Win32 시스템 + StringHelper.GetGUID (); 
    }

 

추천

출처www.cnblogs.com/yunliu0603/p/11280621.html