使用PL / SQL创建xls文件而不通过xml

时间:2012-10-04 18:17:24

标签: xml excel plsql oracle-apex xls

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

3 个答案:

答案 0 :(得分:3)

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/

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

答案 1 :(得分:1)

您可以使用Java存储过程

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

和Apache Poi

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

创建实际的Spreadsheets并将其存储在lob字段中,并返回给用户

答案 2 :(得分:1)

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

它有一个简单的API,您可以在其中逐步创建Excel文件,并描述每个单元格的外观。

完成Excel文件后,可以选择生成xlsx文件到PL / SQL BLOB变量,该变量可以返回到APEX并下载。

没有任何警告会让您的客户感到烦恼。

您可以编写一个简单的函数,如下所示,创建一个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

干杯