我的系统是用APEX/Oracle 11g开发的,想直接创建xls文件,不用创建xml文件。系统当前创建了一个xml文件,然后可以保存为xls格式,但是非常挑剔的用户不喜欢尝试打开xml文件时的Windows 7警告(Excel警告文件格式不与其扩展名不匹配)。有什么方法可以在 APEX 中使用 Oracle PL/SQL 来完成此任务?
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/
在包头中使用很好的示例非常简单。
您可以使用 Java 存储过程
http://docs.oracle.com/cd/B28359_01/java.111/b31225/chfive.htm
和阿帕奇 Poi
http://poi.apache.org/spreadsheet/index.html
创建实际的电子表格并将其存储在 lob 字段中,然后返回给用户
您可以使用 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
干杯