7

そのため、Web アプリケーションのランタイム ビューアーでレポートを開かずに、Crystal レポートを PDF にエクスポートしようとしています。

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 メソッドは、レポートのファイル パスを取得して読み込むために使用されます。

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

4

1 に答える 1

1

このサンプル コードは機能します。エラー管理を見てください。

protected void btnExport_Click(object sender, EventArgs e)
{
    // Stop buffering the response
    Response.Buffer = false;
    // Clear the response content and headers
    Response.ClearContent();
    Response.ClearHeaders();

    ExportFormatType format = ExportFormatType.PortableDocFormat;
    string ext =  ".pdf";
    string reportName= "myreport";

    try
    {
        reportDocument.ExportToHttpResponse(format, Response, true, reportName);
    }
    catch (System.Threading.ThreadAbortException)
    {
        //ThreadException can happen for internale Response implementation
    }
    catch (Exception ex)
    {
       //other exeptions will be managed   
       throw;
    }
}
于 2012-07-23T14:16:59.347 に答える