2012-06-26 52 views
-2

我做我自己的包(稱爲 'export_excel')這個包有一個程序(稱爲get_excel)出口Oracle過程到Excel沒有XML

和代碼

http://en.allexperts.com/q/Oracle-1451/2011/12/pl-sql-proc-generate.htm

這個想法是我的一些代碼

CREATE OR REPLACE procedure get_excel is 

CURSOR select_tbl is SELECT * FROM my_table; 

wfile_handle utl_file.file_type; 
v_wstring varchar2 (100); 
v_header varchar2(100); 
v_file varchar2(100); 

begin 

v_header :='My Header'; 
v_file := 'my_file_name.xls'; 
wfile_handle := utl_file.fopen ('MY_PATH',v_file, 'W'); 

utl_file.put_line(wfile_handle,v_header); 

for i in select_tbl loop 

    v_wstring := i.col1 ||','||i.col2||','||i.col3||; 

    utl_file.put_line(wfile_handle,v_wstring); 

end loop; 

utl_file.fclose (wfile_handle); 

end print_reports; 

此代碼是我的工作,但是當我打開「my_file_name.xls」與MS-Excel中的消息對話框告訴我有關「這是不匹配文件類型',當我用文本編輯器保存我的文件時,它提供默認的類型爲xml,當我用文本編輯器打開我的文件時,我將代碼看作xml格式。

但如果我從MS-Excel保存我的文件,我會看到很多十六進制數字和文件大小比我的文件小。

對不起,我的語言

回答

1

如果我理解正確你的問題,還有你拿二者均涉及到後臺兩種可能的途徑。第一種選擇是後臺打印到excel可以解釋的.csv文件。這是通過以下方式完成的。:

set colsep , 
set underline off 
set trimspool on 
spool /path/to/file/query.csv 

SELECT * 
FROM table 
WHERE table.field = 'value'; 

spool off 

第二種方法提供了一些基本的excel格式。這是通過打開html標記完成的:

set markup html on 
set underline off 
set trimspool on 
spool /path/to/file/query.xls 

SELECT * 
FROM table 
WHERE table.field = 'value'; 

spool off 
+0

感謝mrcardoor :) – user1482291