所以我真的可以使用线索来了解为什么会发生这种情况以及如何解决它。我正在尝试使用下面的代码将水晶报告导出为pdf:
protected void ExportRptButton_Click( object sender, EventArgs e )
{
Datamart.UI.Reporting.Web.ReportParamsSvc.ReportDefinition rptCfg = SelectedReport;
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.
//LoadReportParameterValues(SelectedReport);
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");
// Response.Filter.Flush();
// Response.Flush();
// 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 (System.Threading.ThreadAbortException ex)
{
logger.ErrorFormat("Could not export to pdf: threading! {0}", ex);
}
catch ( Exception ex )
{
logger.ErrorFormat("Could not export to pdf! {0}", ex);
}
}
}
“ConfigureCrystalReports”只获取报告的文件路径。
“LoadParameterFields”填充报告的参数,我很确定它的工作原理,因为它与我在CRViewer中打开报告时用于填充参数的代码相同。但是如果你想看看它做了什么,请告诉我,我会添加它。
关于“LoadStaticTextFields”也是如此,它只获取报告中标签的文本值。
我收到的错误可以在下面的img中找到:
我最好猜测问题发生在哪里是在try循环中。正如您所看到的,我已经尝试了几种不同的方法,其中包含大多数注释掉的代码的响应字段。
我花了很多时间寻找答案,大多数人说我必须从我的代码中删除所有的Response.Write()调用,但是我没有使用Response.Write()在我的代码中的任何地方。
非常感谢任何帮助或建议。谢谢。
答案 0 :(得分:0)
尝试不清除标题..