【问题标题】:How to Compress and Email Excel Report in SSRS(SQL Server Reporting Services) in Run Time?如何在运行时压缩和发送 SSRS(SQL Server Reporting Services)中的 Excel 报表?
【发布时间】:2014-08-11 11:57:11
【问题描述】:
我是 SSRS 的新手,首先抱歉,如果这个问题已经发布,但经过精细搜索后我发布了这个。
在我的商业智能开发工作室中,我正在生成 SSRS 报告并将它们保存为 excel 格式,直到现在一切正常。但是在此之后我需要在运行时将这些报告通过电子邮件发送给客户,因为我无法做到这一点更大的文件大小。直到现在我手动执行此操作。但我需要它们在运行时完成。我搜索了很多关于如何在运行时压缩和通过电子邮件发送报告的东西,但我发布了这个是徒劳的。
感谢您提供带有屏幕截图的回复。提前致谢。
【问题讨论】:
标签:
sql-server
reporting-services
ssis
ssrs-2008
business-intelligence
【解决方案1】:
您必须以编程方式执行此操作 - 也就是说,编写一个程序来运行报表、将其呈现到 Excel、保存、压缩然后通过电子邮件发送出去。
这听起来很难,但实际上很简单。使用ReportExecutionService.Render 方法,您可以根据需要呈现报告,因此您可以呈现到Excel,压缩输出并将它们附加到电子邮件中。
MSDN 网站has some code to get you started。
【解决方案2】:
添加一个较晚的答案,以防有人遇到相同的情况。
我解决此问题的方法是将 SSRS 订阅更改为写入“Windows 文件共享”而不是电子邮件。
如果您的电子邮件系统有大小限制并且文件太大,这将特别有用。此外,在 SSRS 中通过电子邮件发送 Excel 的行限制约为 65k,但如果您选择 Excel 而不是 Excel 2003,则文件系统没有此限制(电子邮件没有此选择)。
将其保存到文件系统后,创建一个包含两个步骤的 SQL Server 作业:
-
压缩文件。例如,像这样使用 xp_cmdshell 和 7-Zip:
exec master.dbo.xp_cmdshell '"C:\Program Files\7-Zip\7z.exe" a -tzip C:\Reports\MyReports.zip C:\Reports\MyReport.xlsx'
-
通过数据库邮件发送压缩文件,如下例:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SERVER DBMAIL',
@recipients = 'email@foo.com',
@subject = 'My Report',
@file_attachments='C:\Reports\MyReport.zip';