簡體   English   中英

Crystal Report Viewer-輸入參數后導出到/打開PDF

[英]Crystal Report Viewer - Export to/open a PDF after entering parameters

我有一個報表查看器,並且我希望在用戶輸入參數並單擊提交按鈕之后(而不是在報表查看器窗口中打開報表)在PDF中打開相關報表。

我在其他地方讀了一些書,發現了這個片段

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

而且我還發現了一個推薦以下內容的帖子:

在CrystalReportViewer_BeforeRenderObject事件中編寫代碼以將報告導出為pdf。

但是我還沒有做很多。 誰能提供一個代碼示例,或鏈接到顯示該解決方案的示例?

DataTable _table = RetObj.EgpReceipt_PrintFC(DummId);

rptDoc.Load(Server.MapPath("EgpReceiptPrintFC.rpt"));
rptDoc.SetDataSource(_table);

rptDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, HttpContext.Current.Response, false, "Redeemed");

您可以在提交按鈕的點擊事件中獲取報告參數,並基於這些參數獲取報告數據,然后,可以將其導出。

這是執行此操作的示例代碼。

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);

我翻閱了我在2006年提交的舊的代碼項目文章,該文章從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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM