将报告导出到Excel

时间:2015-11-18 10:07:59

标签: excel oracle plsql

我想将表导出到Excel文件。我需要导出报告。

ORA_EXCEL.new_document;
ORA_EXCEL.add_sheet('Sheet name');
ORA_EXCEL.query_to_sheet('select * from mytable');
ORA_EXCEL.save_to_blob(myblob);

我把桌子保存到blob。

如何导出/回复用户(客户端)?

我需要一些简单的东西,让用户能够将Excel文件下载到自己的计算机上。我尝试在Oracle工作流程中执行此过程:

ORA_EXCEL.save_to_file('EXPORT_DIR', 'example.xlsx');

但这没有帮助,因为它将文件保存到服务器上的目录中,我需要它在真实服务器中。

2 个答案:

答案 0 :(得分:0)

我过去处理类似问题的方法是与系统人员一起从数据库服务器上的Web服务器或文件服务器安装目录。

然后创建一个目录对象,以便该过程可以保存到用户可以访问的位置。

如果文件不敏感且用户数量有限,那么文件服务器就有意义,因为它只是让用户访问文件共享。

如果文件是敏感的或者这是一个大数目或未知的用户,我们然后使用Web服务器并发送一个电子邮件,其中包含指向用户的链接,使他们能够下载文件。当然,需要内置安全性来阻止人们下载其他用户文件。

我们并没有将这些文件作为附件发送电子邮件,因为......

1)附件的电子邮件往往会被封锁

2)我们始终建议不要在电子邮件中打开附件。 (是的,我知道我们建议不要点击链接,但没有什么是完美的)

答案 1 :(得分:0)

调用文档制作的人或者是什么?

如果由用户正在处理的应用程序完成,则此应用程序可以获取BLOB,将其存储在f.e. TEMP-Directory和电话 System.Diagnostics.Process.Start("...");使用关联的应用程序打开它。 (见Open file with associated application

如果它是一个网站,这个可以将blob作为Excel-Mimetype流式传输(参见Setting mime type for excel document

此外,您可以存储在Oracle-DIRECTORY中,但这一个必须位于服务器上,并且应该是客户可以访问的netword-share(在生产环境中很少被接受!)

如果MAIL不是解决方案,那么FTP可能是一种将文件存储在公共共享中的方法。请参阅UTL_TCP - Package,这样就可以实现FTP传输(有点难以编码,但有很多解决方案可以在网上找到),我想,这是一种专业工具,可以从Oracle-DB生成Office文档并分发它们这样做。