[Oracle APEX] 엑셀 파일 업로드하고, 내용 조회하기

APEX를 개발해서 사용하다보면 외부에서 생성한 엑셀 파일을 업로드해야 하는 경우가 발생합니다.

엑셀 파일을 업로드하는 테이블 (EXCEL_FILE)


엑셀 파일 내용을 담는 테이블 (EXCEL_UPLOAD)

2. 페이지 생성

엑셀 파일 목록 페이지

엑셀 파일 업로드 폼


엑셀 파일 내용 페이지


3. 패키지 생성


INSERT_DATA 프로시저를 중심으로 설명합니다.

INSERT_DATA 프로시저는 엑셀 파일 업로드 폼에서 폼 프로세스를 완료한 뒤에 연속적으로 실행되는 프로세스로 추가합니다.


프로세스의 Type은 Invoke API를 선택하고, 패키지를 AUTOOFFICE_EXCEL_UPLOAD를 선택한 뒤, 프로시저를 INSERT_DATA를 선택합니다.


이렇게 선택하면 파라미터 값을 지정해주어야 하는데, p_seqno 에는 P21_SEQNO (여기서는 21번 페이지라서 P21입니다.), p_appuser에는 :APP_USER 를 입력합니다.

이제 폼으로 엑셀을 업로드하면 INSERT_DATA가 실행되면서 EXCEL_UPLOAD 테이블에 해당 엑셀의 데이터를 INSERT 해줍니다. 코드 레벨로 살펴보실까요?



C_EXCEL이라는 커서를 만드는데, APEX_DATA_PARSER.PARSE 라는 내장함수를 사용해서 만든 테이블에서 SELECT를 합니다.

APEX_DATA_PARSER.PARSE는 다음과 같은 파라미터를 받습니다.

p_content: 엑셀 파일의 BLOB 입니다.

AUTOOFFICE_EXCEL_UPLOAD.GET_FILE_BLOB(P_SEQNO) 으로 BLOB을 가져옵니다. 이 함수는 앞에 정의가 되어 있는데, p_seqno로 blob을 가져오는 함수입니다.

p_file_name: AUTOOFFICE_EXCEL_UPLOAD.GET_FILE_NAME(P_SEQNO) 으로 파일이름을 가져옵니다. (생략해도 동작하기는 합니다.)

p_skip_rows: 몇 행을 SKIP할지 결정합니다. 0으로 설정하면 맨 첫 행의 라벨도 가져옵니다. 비정형의 엑셀 파일을 다양하게 활용할 때에는 0으로 하면 EXCEL_UPLOAD에서 라벨까지 볼 수 있어서 편리합니다.

p_file_type: AUTOOFFICE_EXCEL_UPLOAD.GET_FILE_TYPE(P_SEQNO)으로 파일 확장자를 가져옵니다. (좀 더 정확하게는 APEX에서 사용하는 형태로 변환한 값을 가져옵니다.)

💡더 자세히 보시려면, 오라클 웹사이트를 방문하세요.

4. 페이지 링크 연결

엑셀 파일 목록 페이지 – 엑셀 파일 내용 페이지

Similar Posts