从Oracle数据库创建Excel电子表格

时间:2011-05-16 13:05:23

标签: oracle spreadsheet export-to-excel

我在Oracle数据库中有一个表。我必须从Oracle表创建一个复杂的电子表格结构。我正在寻找实现这一目标的最佳方法。我可以使用SSIS或使用一些Oracle实用程序来创建电子表格。

非常感谢任何帮助。

提前致谢。

此致 DIBS

5 个答案:

答案 0 :(得分:7)

我想问题是,你的“复杂结构”有多复杂?

Oracle SQL Developer或Quest TOAD等编程IDE具有向导将数据表导出为CSV文件的向导。

如果要连接多个表中的数据,可以使用视图,甚至编写SQL语句

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

(重新说明列通常可以包含逗号的数据,因此您可能希望使用更不寻常的字符 - 或字符集 - 作为分隔符。)

另一种快速做事的方法是使用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文件),那么您需要超越Oracle内置插件。直接从PL / SQL导出到Excel的常用解决方案是Tom Kyte用于SYLK api的OWA_SYLK包装器。 Find out more.

这适用于单个工作表。如果要导出到多个工作表,可以使用几种替代解决方案。

Sanjeev Sapre有他的get_xl_xml包。顾名思义,它使用XML进行转换。 Find out more

Jason Bennett编写了一个生成Excel XML文档的PL / SQL对象。 Find out more

答案 1 :(得分:3)

您可以使用ORA_EXCEL包创建结构复杂的Excel文档。 ORA_EXCEL具有基本但功能强大的组件,您可以使用它们来构建复杂的Excel文件。

检查功能列表:http://www.oraexcel.com/documentation

答案 2 :(得分:0)

我要尝试的第一件事就是将我想要的值转储为CSV。 Excel应该能够很好地导入,并且通常更容易手动调整Excel公式等,而不是尝试自动化它。如果您使用的是Oracle SQLDeveloper,则可以选择将结果导出为CSV。如果您正在使用SQL * Plus,则可以使用set colsep ,使Oracle使用逗号分隔列。但是,如果您使用的是SQL * Plus,则可能需要进行一些格式调整。

答案 3 :(得分:0)

答案 4 :(得分:0)

设置linesize 4000 pagesize 0 colsep','

上的修剪工具上的三角形设置

spool c:/file.xls

从tableName中选择*;

假脱机;

这将在c盘中生成你的file.xls。您可以提供任何地址,如果您想要列标题,请删除"标题为"子句并将pagesize设置为某个数值。