![](/img/trans.png)
[英]Get contents from each page in Crystal Report viewer and export it to a 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.