将报表导出到Excel

将报表导出到Excel,excel,oracle,plsql,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); 我把我的桌子保存成一团 如何导出/响应用户(客户端) 我需要的东西是简单的,让用户能够下载到自己的电脑Excel文件。我尝试在Oracle工作流中执行此过程: O

我想将表格导出到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);
我把我的桌子保存成一团

如何导出/响应用户(客户端)

我需要的东西是简单的,让用户能够下载到自己的电脑Excel文件。我尝试在Oracle工作流中执行此过程:

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

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

我过去处理类似问题的方法是与系统人员合作,从web服务器或数据库服务器上的文件服务器装载目录

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

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

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

我们不只是把文件作为附件发电子邮件,因为

1) 带有附件的电子邮件往往会被阻止


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

谁或什么在调用文档的生成

如果它是由用户正在处理的应用程序完成的,则该应用程序可以获取BLOB,将其存储在f.e.TEMP目录并调用
System.Diagnostics.Process.Start(“…”)
以与关联的应用程序一起打开它。(见附件)

如果它是一个网站,这个网站可以将blob以excelmimetype的形式流回(请参阅)

您也可以存储在Oracle目录中,但此目录必须位于服务器上,并且应该是一个网络共享,以便客户端可以访问(在生产环境中很少接受!)


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

您无法将文档保存到客户端,因为数据库服务器不知道您的客户端。您可以与客户端共享oracle目录,运行脚本,然后将结果复制到客户端;或者需要编写一些逻辑(函数、Web服务等),以准备xls文件,然后将其传递给客户端也许您的应用程序可以通过电子邮件将电子表格发送给用户。我将此blob添加到表中,然后从表中提供了指向用户的链接=)