0

だから、これがなぜ起こっているのか、そしてそれを解決する方法についての手がかりを本当に使うことができました. 以下のコードを使用して、Crystal レポートを 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" についても同じことが言えます。

私が受け取っているエラーは、以下の画像で見つけることができます:

ここに画像の説明を入力

問題が発生している場所についての私の最善の推測は、try ループにあります。ご覧のとおり、コメント アウトされたコードのほとんどから Response フィールドを使用して、いくつかの異なるアプローチを試しました。

私はこれに対する答えを探すのに多くの時間を費やしましたが、ほとんどの人は自分のコードからすべての Response.Write() 呼び出しを削除する必要があると言っていますが、私のコードのどこにも Response.Write() を使用していませんコード。

どんな助けや提案も大歓迎です。ありがとうございました。

4

1 に答える 1

0

ヘッダーをクリアしないようにしてください..

于 2012-07-25T21:26:34.263 に答える