使用PL / SQL创buildxls文件,而无需通过xml

我的系统是在APEX / Oracle 11g中开发的,我想直接创build一个xls文件,而不必创build一个xml文件。 系统目前创build一个xml文件,然后可以将其保存为xls格式,但是当用户尝试打开xml文件时,非常挑剔的用户不喜欢Windows 7警告(Excel警告文件的格式确实不符合其扩展名)。 有没有办法在APEX中使用Oracle PL / SQL来完成这个任务?

Morten Braten提供了一个很棒的PLSQL资源页面: http : //code.google.com/p/plsql-utils/

特别是Anton Scheffer已经分享了他的软件包AS_XLSX,以满足您的APEX需求: http ://technology.amis.nl/2011/02/19/create-an-excel-file-with-plsql/

在包头中使用很好的例子非常简单。

您可以使用Java存储过程

http://docs.oracle.com/cd/B28359_01/java.111/b31225/chfive.htm

和Apache Poi

http://poi.apache.org/spreadsheet/index.html

创build实际的电子表格并将其存储在lob字段中,并返回给用户

您可以使用OraExcel包生成真正的xlsx文件(二进制forms)。 使用这个包,你可以像在Excel中一样格式化单元格和应用样式。

它有一个简单的API,您可以逐步创buildExcel文件,并描述每个单元格的样子。

当您完成Excel文件时,可以select将xlsx文件生成为PL / SQL BLOBvariables,并将其返回到APEX并下载。

没有任何警告让您的客户恼火。

您可以编写一个简单的函数,如下所示,创build一个Excel电子表格并将其返回给APEX:

CREATE OR REPLACE FUNCTION get_excel RETURN BLOB IS my_blob BLOB; BEGIN ora_excel.new_document; ora_excel.add_sheet('My sheet'); ora_excel.query_to_sheet('SELECT field1, field2, field2 FROM my_table'); ora_excel.save_to_blob(my_blob); RETURN my_blob; END; 

有更多的例子: http : //www.oraexcel.com/examples

干杯