SSRS导出到xlsx损坏了吗?

时间:2015-12-10 13:57:10

标签: excel ssrs-2012 report-viewer2012

我有一些报告,我只想使用链接来渲染excel。为了做到这一点,我有一个页面(实际上是Web应用程序),它使用ReportViewer选择参数,然后使用以下代码拦截渲染阶段:

    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
        }
    }

稍后将其发送给用户。

但是,虽然旧Excel格式的渲染(使用ReportViewer.ServerReport.Render("Excel"))效果很好,但渲染到较新的EXCELOPENXML文件格式会提供Excel 2013所说的损坏的文件。

在我让Excel修复文件后,除了布局上的一些差异外,我无法真正看到文件内容的任何差异。但是,我无法提供破损的应用程序,所以我必须让它工作。用户不会接受此输出。我们确实需要更新的文件格式,因为我们的报告生成了大量的行。

有谁知道这是报告查看器中的错误,还是我在这里做错了?有谁知道修复?

1 个答案:

答案 0 :(得分:0)

如果您还在努力解决这个问题,答案是会话的最大大小是有限的,并且导出不适合会话变量。