2011-12-07 15 views
4

定義済みのディレクトリに格納されているExcelシートにデータを書き込む際に問題はありません。OracleでUTL_FILEパッケージを使用してExcelSheetに書き込む

今私は10セットのデータを持っており、各セットごとに10枚のエクセルシートを作成する必要があります。 しかし、私が望むのは、シート1、シート2を提出するワークブックを作成することです。 Sheet10。これは、記録のすべての10セットを持っています。私の質問が明確でない場合は、私に知らせてください。

私は、データの1セットのために秀でるために書きますPL/SQLのOracle 9iの

マイコードを使用しています。より多くのデータがあり、複数のExcelシートを必要としない場合は、diffシート付きのワークブックが1つ必要です。

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

あなたが投稿したリンクはもはや機能しません。この[リンク](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)に掲載しました。

私はそれがループを通してそれを置くことによって、単一のExcelブック内の複数のシートを作成し、アントン・シェファー、Create an Excel-file with PL/SQLによって作成as_xlsxというパッケージを使用してパッケージ にいくつかの変更を行いました。

希望すると便利です。

関連する問題