SSRS - 发送Excel附件&身体在HTML中

时间:2014-02-04 09:30:22

标签: sql-server-2008 reporting-services rendering subscription

我有2个数据集:

  • 电子邮件,如excel附件 - 详细信息
  • 电子邮件正文中的HTML摘要 - 第1个结果集的摘要计数

我们如何在SSRS中做到这一点?目前我在一个excel和一个电子邮件中使用了2个结果集。但我希望将电子邮件发送为电子邮件正文中的摘要数据集2和结果集1作为Excel附件。

1 个答案:

答案 0 :(得分:0)

我认为你必须为此编写一些代码,因为我认为SSRS调度程序不够灵活,无法做到你想要的。我没有使用调度程序,我编写了一个程序,它在这里描述的方式相当多。

首先,您要创建HTML电子邮件:

MailMessage message = new MailMessage("me@mycompany.com", "you@mycompany.com");
message.Subject = "Here is your report!";
message.IsBodyHtml = true;

现在,对于您需要run the report using the ReportExecutionService.Render method的电子邮件正文。首先运行呈现为HTML的摘要报告,并将其作为电子邮件的邮件正文。

message.Body = SummaryReport; // SummaryReport being the HTML report rendered above

接下来,使用ReportExecutionService.Render方法将详细报告呈现为Excel,并将其作为附件添加到您的电子邮件中:

ms.Seek(0, SeekOrigin.Begin);                          // ms is the MemoryStream that the report rendered to
message.Attachments.Add(new Attachment(ms, filename)); // filename is the name you want the attachment to have in the email

然后发送,你就完成了!

SmtpClient smtp = new SmtpClient("smtpserver.mycompany.com");
smtp.Send(message);

我没有尝试过的一点是使用摘要报告的HTML输出作为电子邮件的正文,但它应该有效。我所做的是运行Sql以返回摘要,只需手动将其格式化为HTML以创建电子邮件正文。