因此,我试图将水晶报表导出为 pdf,而无需在我的 Web 应用程序的运行时查看器中使用
ExportToHttpResponse
方法。在加载参数、获取加载报告的文件名/路径时,一切似乎都正确执行。但是,当我执行假设创建一个弹出对话框的部分时,用户可以选择保存、运行、取消任何类型的下载,什么都没有发生。没有错误被抛出。它没有跨过我知道的代码的任何部分。它似乎运行了 ExportToHttpResponse 行,然后什么也不做。
所以我希望有人能给我一些指导,说明我在下面找到的代码中可能做错了什么:
protected void ExportRptButton_Click( object sender, EventArgs e )
{
if ( null != SelectedReport )
{
rptParams.Clear();
rptParams = null;
// Get the report document
// string filePath = Server.MapPath( @"~\Reports\" + SelectedReport.FileName + ".rpt" );
// Declare a new Crystal Report Document object and load the report file into the report document.
ReportDocument rptDoc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
ConfigureCrystalReports(rptDoc);
// repDoc.Load(rptFileName);
// AddParameters();
// Set the report parameters the report object.
LoadParameterFields(rptDoc);
// Set the static text fields in the report object.
LoadStaticTextFields(rptDoc);
try
{
if (rptDoc.IsLoaded)
{
// Stop buffering the response
Response.Buffer = false;
// Clear the response content and headers
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
// Export the Report to Response stream in PDF format and file name Customers
rptDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "DirectAccessReport");
// rptDoc.ExportToDisk(ExportFormatType.PortableDocFormat, "~/PDF_Folder");
// There are other format options available such as Word, Excel, CVS, and HTML in the ExportFormatType Enum given by crystal reports
}
}
catch ( Exception ex )
{
logger.ErrorFormat("Could not export to pdf! {0}", ex);
}
}
}
一些注意事项:上面显示的 LoadParametersFields/LoadStaticTextFields 方法似乎工作正常,当用于在 crviewer 中打开报告时,报告会出现并正常工作。虽然,如果您也希望看到这些方法,我会根据要求将它们扔掉。
开头的 rptParams 是私有声明的 List<ReportParameter>()
ConfigureCrystalReports 方法用于获取和加载报表的文件路径。
非常感谢任何帮助或建议。谢谢你。