代码之家  ›  专栏  ›  技术社区  ›  Albert

Crystal Report Viewer-输入参数后导出/打开PDF

  •  0
  • Albert  · 技术社区  · 14 年前

    我有一个报表查看器,我希望在用户输入参数并单击提交按钮(而不是在报表查看器窗口中打开报表)后,以PDF格式打开有问题的报表

    我在别处读了一些东西,发现了这个片段

    rptSP.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Report");
    

    我还发现了一个帖子,里面推荐了以下内容:

    在CrystalReportViewer\u BeforeRenderObject事件中编写将报表导出为pdf的代码。

    但我还没过多久。有没有人能提供一个代码示例,或者链接到一个显示此解决方案的示例?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Ahmed Atia    14 年前

    ReportDocument rptDoc = new ReportDocument();
    rptDoc.Load(Server.MapPath("ETR0040.rpt"));
    
    
    // Fetch report parameters to retrieve report data.
    ...
    
    // Retrieve report data.
    DataSet dsResult = DBGateway.ExecuteCommand('command');
    rptDoc.SetDataSource(dsResult);
    
    // Report parameters - to be passed if there are any parameters which should be passed to report.
    rptDoc.SetParameterValue("CustomerCode", customerCode);
    
    DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
    string targetFileName = Request.PhysicalApplicationPath + "Reports\\TempReports\\" + (new Random()).Next() + ".pdf";
    
    rptDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    rptDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
    
    diskOpts.DiskFileName = targetFileName;
    rptDoc.ExportOptions.DestinationOptions = diskOpts;
    
    // Export report ... Server-Side.
     rptDoc.Export();
    
    FileInfo file = new FileInfo(targetFileName);
    
    Response.ClearContent();
    Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
    Response.AddHeader("Content-Length", file.Length.ToString());
    Response.ContentType = "application/pdf";
    Response.TransmitFile(file.FullName);
    
        2
  •  1
  •   nhahtdh Pankaj Wadhwa    11 年前
    DataTable _table = RetObj.EgpReceipt_PrintFC(DummId);
    
    rptDoc.Load(Server.MapPath("EgpReceiptPrintFC.rpt"));
    rptDoc.SetDataSource(_table);
    
    rptDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, HttpContext.Current.Response, false, "Redeemed");
    
        3
  •  0
  •   moomi    14 年前

    我翻阅了我在2006年提交的一篇旧的codeproject文章——它从Crystal Reports项目导出为pdf。我不确定这些库是否还相关——更糟糕的是,它是在VB中。希望这是可行的,或者至少指向正确的方向。

    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    '
    ' <snip>
    Dim ExportToFile As New CsReports.Reports
    ExportFile = ExportPath + Session.SessionID.ToString + ".pdf"
    ExportToFile.ReportToPDF(crReportDocument, ExportFile)
    Try
        ' Export the report
        crReportDocument.Export()
        Response.ClearContent()
        Response.ClearHeaders()
        Response.ContentType = "application/pdf"
        Response.WriteFile(ExportFile)
        Response.Flush()
        Response.Close()
        System.IO.File.Delete(ExportFile)
    Catch err As Exception
        Throw err 'MessBox("Error: Export Failed.!" + err.Message.ToString)
    End Try 'Adobe Acrobat Export***************************
    

    然后是ReportToPDF方法:

    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Imports System
    Imports System.Data
    Imports System.Web.UI.Page
    Imports System.IO
    
    Namespace CsReports
    Public Class Reports
        Inherits System.Web.UI.Page
    
        Dim crExportOptions As ExportOptions
        Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
    
        Public Sub ReportToPDF(ByVal crReportName As ReportDocument, ByVal ExportFile As String)
            ' Create a new instance of the diskfiledestinationoptions class and
            ' set variable called crExportOptions to the exportoptions class of the reportdocument.
            crDiskFileDestinationOptions = New DiskFileDestinationOptions()
            crExportOptions = crReportName.ExportOptions
    
            'Set this file as the filename property for the DestinationOptions class
            crDiskFileDestinationOptions.DiskFileName = ExportFile
    
            'set the required report ExportOptions properties
            With crExportOptions
                .DestinationOptions = crDiskFileDestinationOptions
                .ExportDestinationType = ExportDestinationType.DiskFile
                .ExportFormatType = ExportFormatType.PortableDocFormat
            End With
        End Sub
    End Class
    End Namespace