2011-05-16 73 views
4

我在Oracle數據庫中有一個表。我必須從Oracle表創建一個複雜的電子表格結構。我正在尋找實現這一目標的最佳方法。我可以使用SSIS或使用一些Oracle實用程序來創建電子表格。從Oracle數據庫創建Excel電子表格

任何幫助將不勝感激。

在此先感謝。

問候 的DIB

回答

0

的第一件事,我會嘗試是剛剛傾倒我想CSV值。 Excel應該能夠導入,這很好,而且手動操作Excel公式等操作比試圖自動化它更容易。如果您使用Oracle SQLDeveloper,則可以選擇將結果導出到CSV。如果您使用SQL * Plus,那麼您可以使用set colsep ,使Oracle使用逗號來分隔列。不過,如果你使用SQL * Plus,你可能會想要進行更多的格式調整。

0

存在稱爲.RDLC(報告定義語言客戶端)的SSRS報告描述的「斷開」版本。這是屬於SSRS一部分的RDL的子集。有Excel和PDF格式的出口商內置了報表查看器控件。查看器控件可用於Windows窗體和Web窗體。這些報告的數據源是通用的數據集或數據對象是不可知的數據源(SQL,甲骨文,...狼煙..)

http://www.highoncoding.com/Articles/339_Creating_Charts_Using_Aspnet_ReportViewer_Control.aspx

http://msdn.microsoft.com/en-us/library/ms251771%28VS.80%29.aspx

7

我想的問題是,你的「複雜結構」有多複雜?

編程IDE(如Oracle SQL Developer或Quest TOAD)具有將數據表導出爲CSV文件的嚮導。

如果你想加入多個表中的數據,你可以使用一個視圖,甚至可以編寫SQL語句

select e.ename||','||d.dname 
from emp e 
     join dept d on (e.deptno = d.deptno) 
/

(rembering該列可以經常包含的數據,其中包括逗號,所以你可能需要使用一個更不尋常的字符 - 或一組字符 - 作爲分隔符)。

另一種快速的方法是使用SQL * Plus的HTML報告功能。許多電子表格工具可以導入結構良好的HTML和XML而不需要搶奪。 Find out more.

如果你想扁平化一個層次結構或更加複雜的東西,你可能需要進入PL/SQL。手卷的方法將使用上述聲明擬合一個變體使用UTL_FILE:

declare 
    csv_fh utl_file.filetype; 
begin 
    csv_fh := utl_file.fopen('C:\temp', 'data_export.csv', 'W'); 
    for r in ( select e.ename, d.dname 
        from emp e 
        join dept d on (e.deptno = d.deptno) 
       ) loop 
     utl_file.put_line(csv_fh, r.ename||'|'||r.dname; 
    end loop; 
    utl_file.fclose(csv_fh); 
end; 

如果你想明確導出到Excel(即.xls文件),那麼你就需要超越甲骨文建-INS。從PL/SQL直接導出到Excel的通常解決方案是Tom Kyte的SYLK api的OWA_SYLK包裝器。 Find out more.

這適用於單個工作表。如果您想要導出到多個工作表,則有一些替代解決方案。

Sanjeev Sapre有他的get_xl_xml包。顧名思義,它使用XML來進行轉換。 Find out more

傑森貝內特寫,其生成一個Excel XML文檔PL/SQL對象。 Find out more

+0

+1,謝謝你的所有鏈接。 – DCookie 2011-05-16 14:28:14

3

您可以使用ORA_EXCEL包來創建複雜的結構Excel文檔。 ORA_EXCEL具有基本但強大的組件,您可以使用它來構建複雜的Excel文件。

Check功能列表中:http://www.oraexcel.com/documentation

0

組LINESIZE 4000頁大小0 COLSEP '' 集標題關閉上trimout trimspool上

線軸C:/file.xls

SELECT * FROM TABLENAME ;

假脫機;

這會在c盤中產生你的file.xls。你可以給任何地址,如果你想要列標題,然後刪除「標題關閉」條款,並將pagesize設置爲某個數值。

相關問題