0

.net 中的报表查看器具有出色的内置导出功能,支持不同的导出格式,如 word、pdf 和 excel。但是,对于我的 asp 应用程序中的管理人员,我希望此导出功能生成一个包含多个 rdlc 报告的单个导出文件,以便他们可以浮动单个文档并继续喝咖啡!需要导出的报表是根据一些业务逻辑动态决定的。
我在论坛上找到了一个有用的代码片段来实现这一点,看起来不错:

    protected void ExportReportsToWord(object Sender, EventArgs e)
    {
        // Variables
        Warning[] warnings;
        string[] streamIds;
        string mimeType = string.Empty;
        string encoding = string.Empty;
        string extension = string.Empty;

        // reportViewer1 and reportViewer2 are reports on my asp.net page
        byte[] bytes1 = reportViewer1.LocalReport.Render("WORD", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
        byte[] bytes2 = reportViewer2.LocalReport.Render("WORD", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

        //create a single byte array out of multiple arrays
        byte[] bytes = (bytes2.Concat(bytes1)).ToArray();

        // Now that you have all the bytes representing the Word report, buffer it and send it to the client.
        Response.Buffer = true;
        Response.Clear();
        Response.ContentType = mimeType;
        Response.AddHeader("content-disposition", "attachment; filename=" + "singleReport" + "." + extension);
        Response.BinaryWrite(bytes); // create the file
        Response.Flush(); // send it to the client to download
        Response.End();

    }

此代码符合要求,但使用此代码导出的文件在打开 word 文档时仍仅显示 1 个报告,即使较大的文件大小表明数据可能也存在于其他报告中。
有人可以指出可能是什么问题吗?如果它可以从多个 rdlc 报告中生成单个单词文件导出,我也愿意接受有关使用完全不同方法的建议。

4

2 回答 2

1

嗨,我建议您宁愿拥有一份报告,然后将所有这些报告作为子报告包含在内,然后安排将该主要报告作为 Word 文档作为电子邮件发送给您的老板。

于 2012-08-01T19:45:37.013 回答
1

一个简单的解决方案是创建一个大型主报告。

在每个元素中都有一个列表,其中的每个元素都是一个子报告。

将参数传递给主报告以决定显示哪些报告以及隐藏哪些报告。

这样,用户可以选择他想要查看的报告,并且您可以获得 SSRS 为标准报告提供的所有功能。

于 2012-08-01T19:48:52.177 回答