2011-12-07 2 views
4

사전 정의 된 디렉토리에 저장된 Excel 시트에 데이터를 쓰는 데 문제가 없습니다.Oracle에서 UTL_FILE 패키지를 사용하여 ExcelSheet에 쓰기

이제 10 세트의 데이터가 있고 각 세트마다 10 개의 별도 엑셀 시트를 만들어야합니다. 하지만 내가 원하는 것은 통합 문서 sheet1, sheet2를 작성하는 것입니다. Sheet10. 어느 것이 레코드의 모든 10 세트를 갖습니다. 제 질문이 명확하지 않으면 알려주세요.

나는 하나 개의 데이터 세트에 대한 엑셀 쓸 것이다 PL/SQL 오라클 9i의

내 코드를 사용하고 있습니다. 더 많은 데이터 집합이 있고 여러 Excel 시트가 필요 없으면 대신 diff 시트가있는 통합 문서 하나를 원합니다.

CREATE OR REPLACE PROCEDURE SP_ORACLE_EXCEL(I_FILE_NAME IN VARCHAR2) AS 

    FILENAME UTL_FILE.FILE_TYPE; 
    FILENAME1 VARCHAR2(1000); 
    CURSOR C1 IS 
    SELECT * FROM MY_TABLE; 
    VARC1 C1%ROWTYPE; 
BEGIN 

    FILENAME1 := 'TEST_' || I_FILE_NAME || '_' || SYSDATE || '.CSV'; 

    FILENAME := UTL_FILE.FOPEN('TEMP_DIR', FILENAME1, 'W'); 

    /* THIS WILL CREATE THE HEADING IN EXCEL SHEET */ 
    UTL_FILE.PUT_LINE(FILENAME, 
        'HEADER1' || ',' || 'HEADER2' || ',' || 'HEADER3' || ',' || 
        'HEADER4' || ',' || 'HEADER5'); 
    OPEN C1; 
    LOOP 
    FETCH C1 
     INTO VARC1; 
    EXIT WHEN C1%NOTFOUND; 
    /* THIS WILL PRINT THE RECORDS IN EXCEL SHEET AS PER THE QUERY IN CURSOR */ 
    UTL_FILE.PUT_LINE(FILENAME, 
         '"' || VARC1.COL1 || '"' || ' ,' || '"' || 
         VARC1.COL2 || '"' || ' ,' || '"' || 
         VARC1.COL3 || '"' || ' ,' || '"' || 
         VARC1.COL4 || '"' || ' ,' || '"' || 
         VARC1.COL5|| '"'); 


    END LOOP; 

    UTL_FILE.FCLOSE(FILENAME); 

END SP_ORACLE_EXCEL; 
+0

을 이해할 수 없습니다. – chance

+0

@chance .now 분명합니다. – Avi

+0

UTL_FILE을 사용하여 xls 파일을 작성하는 방법은 무엇입니까? 너와 우리와 나눌 수 있니? –

답변

6

제가 알고있는 바로 사용할 수있는 구현은 없습니다.

'07 년 이후의 Excel 파일 (.xslx)은 실제로 각 워크 시트에 별도의 XML 파일을 포함하는 zip 아카이브입니다.

그들이 사용하는 XML 스키마는 pretty straight forward입니다. 이러한 파일을 작성하려면 Java를 사용하여 폴더를 만들고 Zip 압축을 수행해야합니다.

+0

게시 한 링크가 더 이상 작동하지 않습니다. 이 [link] (https://msdn.microsoft.com/en-us/library/dd979954 (v = office.12) .aspx) MSDN에 동일한 일이 있어야합니다. – Corwin01

3

오픈 소스 PL/SQL ExcelDocumentType으로이 작업을 수행 할 수 있습니다. (비록 9i에서 시도하지는 않았지만)

0

나는 SO (Create an Excel File (.xlsx) using PL/SQL)에 최근 게시 된이 문제에 대한 해결책을 찾을 수있었습니다.

나는 안톤 페르, Create an Excel-file with PL/SQL 만든 as_xlsx라는 패키지를 사용하고 그래서 루프를 통해 넣어 하나의 Excel 통합 문서 내부에 여러 장을 만들어 패키지 에 몇 가지 수정을했다.

희망이 도움이됩니다.

관련 문제