问:我目前处于怀疑状态,我是否以正确的方式行事。基本上,我有一个任务,需要查询存储在MSSQL规范化数据库中的数据,以便在不同的图表中显示它们。然后,需要将这些图表转换为自定义PDF,并自动将其作为电子邮件附件发送。
我正在做什么:我目前正在使用LINQ查询数据,修改数据以使其在服务器端成为JSON结构。然后在客户端,我正在使用AJAX来使用JSON数据并使用Google图表显示它。然后,我使用jsPDF通过单击一个按钮来生成PDF。
我目前拥有的解决方案可以正常工作,但是从某种意义上来说,它是手动的,因为我需要单击一个按钮来生成PDF并发送电子邮件。您是否建议一个更好的工作流程来获取数据,将其生成为图表(即使这些是在服务器端完成的)并在一个自动过程中将其作为电子邮件发送?我从未使用过SSIS,SSRS和SSAS,因此这些可能值得研究。
请对此有任何反馈吗?
答:您可以手动将这些报表另存为PDF(因为报表查看器中有一个选项) )或代码。我正在分享一些代码片段,您可以将其用于解决方案。
要将报告转换为PDF:
私有字符串ExportReportToPDF(字符串reportNamewithFullPath)
{
警告[]警告;
string [] streamids;
字符串mimeType;
字符串编码;
字符串filenameExtension;
byte []个字节= ReportViewer1.LocalReport.Render(
“ PDF”,null,输出mimeType,输出编码,输出filenameExtension,
掉流,掉警告);
字符串文件名= Path.Combine(Path.GetTempPath(),reportNamewithFullPath);
使用(var fs = new FileStream(filename,FileMode.Create))
{
fs.Write(bytes,0,bytes.Length);
fs.Close();
}
返回文件名;
}
通过邮件发送pdf:
私人void BtnSendByMail_ Click(对象发送者,EventArgs e)
{
邮件邮件= sendMailView.CurrentItem; //某些邮件帮助程序类。你可以用你自己的
mail.AttachmentFiles.Add(ExportReportToPDF(yourRdlcReportPath));
mail.DeleteFilesAfterSend = true;
mail.RequireAutentication = true;
mail.Send();
}
因此,可以根据需要将这两种方法结合起来以创建完整的代码。