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

本文关键字:位置 定位 对话框 保存 显示 编程 方式 报告 ReportViewer | 更新日期: 2023-09-27 18:16:07

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

当获取信息时,我可以选择将它们导出为PDF, Word或Excel文档,要做到这一点,首先,我需要保存来查看文档。

我更喜欢另一种方式,即将结果导出到特定的文件,然后保存文档,如果这是我的选择。

这可能吗?

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

您可以处理ReportViewerReportExport事件,然后使用LocalReportServerReport属性的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,如果您忘记,您将看到对话框