ReportViewer -以编程方式将报告导出到特定位置,而不显示保存对话框
本文关键字:位置 定位 对话框 保存 显示 编程 方式 报告 ReportViewer | 更新日期: 2023-09-27 18:16:07
我目前有一个Windows窗体ReportViewer
,从SSRS
报告中获取信息。
当获取信息时,我可以选择将它们导出为PDF, Word或Excel文档,要做到这一点,首先,我需要保存来查看文档。
我更喜欢另一种方式,即将结果导出到特定的文件,然后保存文档,如果这是我的选择。
这可能吗?
您可以处理ReportViewer
的ReportExport
事件,然后使用LocalReport
或ServerReport
属性的Render
方法设置e.Cancel=true;
,导出到所需位置。
为rdlc报告使用LocalReport
,为rdl报告使用ServerReport
。在下面的代码中,我决定使用属性使用ProcessingMode
的值。
这样,当用户单击Export
按钮中的一个可用选项时,报告将被导出到您在代码中设置的位置的指定格式:
private void reportViewer1_ReportExport(object sender,
Microsoft.Reporting.WinForms.ReportExportEventArgs e)
{
e.Cancel = true;
string mimeType;
string encoding;
string fileNameExtension;
string[] streams;
Microsoft.Reporting.WinForms.Warning[] warnings;
Microsoft.Reporting.WinForms.Report report;
if (reportViewer1.ProcessingMode == Microsoft.Reporting.WinForms.ProcessingMode.Local)
report = reportViewer1.LocalReport;
else
report = reportViewer1.ServerReport;
var bytes = report.Render(e.Extension.Name, e.DeviceInfo,
Microsoft.Reporting.WinForms.PageCountMode.Actual, out mimeType,
out encoding, out fileNameExtension, out streams, out warnings);
var path = string.Format(@"d:'file.{0}", fileNameExtension);
System.IO.File.WriteAllBytes(path, bytes);
MessageBox.Show(string.Format("Exported to {0}", path));
}
注意:也不要忘记使用设计器或代码将reportViewer1_ReportExport
附加到ReportExport
,如果您忘记,您将看到对话框