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