2012-11-15 41 views
0

我試過從shell腳本生成一個excel表單。這必須包含查詢的結果。如何在shell腳本中實現excel的「文本導入嚮導」功能

我確實得到了一張excel表格。但是當我打開它時,列沒有分開,而是查詢輸出的所有字段都出現在第一列中。

例如:

下面是粘貼的查詢結果。當我直接在excel中粘貼而沒有導出時,這些將被放置在excel的第一列中。

在MS-Excel 2007中,我們將得到「粘貼選項」,我們可以在其中選擇「使用文本導入嚮導」將字段分隔爲excel中的列。

我需要通過shell腳本來實現這個功能。

你能幫我解決這個問題嗎?

COL1     COL2 COL3     
---------------------- ---- ---------------------- 
12      a 1      
198     b 2      
159     ast 3      
434      rd 4      
56       5      
1031      6 

感謝, Savitha

+0

您是否必須創建本機Excel文件(.xls或.xlsx等),還是可以生成CSV文件? –

回答

0

假設你就可以生產.csv文件,查詢可以直接與他們之間的逗號(或者,如果你喜歡一些其他分離器)串聯領域在一起;是這樣的:

select col1 ||','|| col2 ||','|| col3 
from my_table 
where ... 

如果任一列可能包含一個逗號,那麼你可以附上那些在雙引號使Excel不會把一個值作爲多個列:

select '"'|| col1 ||'","'|| col2 ||'","'|| col3 ||'"' 
from my_table 
where ... 

從Oracle的角度出發,成爲單個結果列,這意味着您的列標題不會像您想要的那樣出現。假設你想要他們,你需要分別生產這些(前的實際查詢):

select 'COL1,COL2,COL3' from dual; 

prompt COL1,COL2,COL3 

您可能還需要調整一些SQL * Plus的設置,如set embed onset linesizeset pagesizeset feedback off ...等,讓它看起來完全正確。

+0

我可以生成.csv格式的文件。在csv文件中,這些字段是separted的,但我嘗試以相同的格式生成xls。它沒有工作。我們不能在xls中實現這個功能嗎? – Savitha

+0

如果你確實需要它作爲.xls,請查看[這個問題](http://stackoverflow.com/q/6303472/266304)上的答案是否對你有幫助。沒有專門生成.xls文件的內置方式,但XML路徑看起來很有前途。如果合適,您也可以在shell腳本中後處理CSV文件;谷歌'csv2xls'(我不能擔保任何結果!)。 –