2

リンクだけを使用して Excel に表示したいレポートがあります。これを行うために、ReportViewer を使用してパラメーターを選択し、次のコードを使用してレンダリング フェーズをインターセプトするページ (実際には Web アプリケーション) があります。

    protected void ReportViewer_SubmittingParameterValues(object sender, Microsoft.Reporting.WebForms.ReportParametersEventArgs e)
    {
        //
        if (e.AutoSubmit == false)
        {
            // Only when default no parameters are set
            ReportViewer.ServerReport.SetParameters(e.Parameters);
            Session["Output"] = ReportViewer.ServerReport.Render("EXCELOPENXML");
            DateTime rendertime = DateTime.Now.ToUniversalTime(); // get the current time so we can add the timestamp to the file name
            Session["Rendertime"] = rendertime.ToString("yyyy-MM-ddTHHmmss");
            e.Cancel = true;    // holds the rendering to the reportviewer webform element
        }
    }

これを後でユーザーに送信します。

ただし、( を使用したReportViewer.ServerReport.Render("Excel")) 古い Excel 形式へのレンダリングはうまくいきましたが、新しい EXCELOPENXML ファイル形式へのレンダリングは、Excel 2013 が破損していると言うファイルを配信します。

Excel にファイルを修復させた後、レイアウトの違いを除けば、ファイルの内容に違いは見られません。ただし、壊れたアプリケーションを配信することはできないので、動作させる必要があります。ユーザーはこの出力を受け入れません。レポートが生成する行数が多いため、新しいファイル形式が必要です。

これがレポートビューアのバグなのか、それとも私がここで間違っているのか、誰かが知っていますか? 誰かが修正を知っていますか?

4

1 に答える 1

0

これにも苦労している場合の答えは、セッションの最大サイズが制限されており、エクスポートがセッション変数に収まらないことです。

于 2016-10-27T17:00:48.583 に答える