ReportViewer - 以编程方式将报告导出到特定位置,而不显示保存对话框

时间:2016-11-03 18:42:24

标签: c# winforms reporting-services reportviewer

我目前有一个Windows窗体ReportViewer,用于从SSRS报告中提取信息。

获取信息后,我可以选择将它们导出为PDF,Word或Excel文档,为此,首先,我需要保存才能看到该文件。

我宁愿以另一种方式使用它,即将结果导出到特定文件,然后保存文档,如果这是我的选择。

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以处理Text2File的{​​{1}}事件并设置ReportExport然后使用其ReportViewere.Cancel=true;属性的Render方法,将其导出到了理想的位置。

LocalReport用于rdlc报告,将ServerReport用于rdl报告。在下面的代码中,我决定使用LocalReport的值来使用属性。

这样,当用户点击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)); } ,如果您忘记了会看到对话框。