如何在shell脚本中实现excel的“文本导入向导”功能

时间:2012-11-15 10:44:43

标签: oracle shell excel-2007

我尝试从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

1 个答案:

答案 0 :(得分: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 ...等,以使其看起来完全正确