如何从Microsoft.Reporting.WinForms.ReportViewer v11导出报表为.xls文件

本文关键字:报表 文件 xls v11 ReportViewer Microsoft Reporting WinForms | 更新日期: 2023-09-27 18:16:50

请告诉我,如何从ReportViewer (v.11)导出报告(rdlc)到。xls文件?

这个版本的查看器可以导出到。xlsx文件通过点击导出-> Excel按钮。在这种情况下,SaveFileDialog将打开,并且我只能选择xlsx格式。但是我也需要将报告保存为。xls格式。

对不起我的英语-我刚开始学。

谢谢!

如何从Microsoft.Reporting.WinForms.ReportViewer v11导出报表为.xls文件

我找到答案了。我把它放在这里是为了另一个…

第11版的ReportViewer可以将报告导出为。xls格式,但默认情况下,这种可能性是隐藏的。

一个支持导出格式的数组,您可以使用ReportViewer.LocalReport.ListRenderingExtensions()实例方法看到。但是接收到的元素的所有属性都是只读的(包括Visible)。

要改变元素的可见性,你应该使用反射。例如:

/// <summary>
/// Set visibility of specified by name RenderingExtension to setted value
/// For example, name of Excel (.xls) extension is "Excel"
/// </summary>
/// <param name="reportViewer">Instance of ReportViewer control</param>
/// <param name="extensionName">Extension name (for example: "Excel")</param>
/// <param name="visible">Visibility</param>
private void SetVisibilityOnRenderingExtension(ReportViewer reportViewer, string extensionName, bool visible)
{
    var renderingExtension = reportViewer.LocalReport.ListRenderingExtensions().FirstOrDefault(e => e.Name == extensionName);
    if (renderingExtension != null)
    {
        FieldInfo info = renderingExtension.GetType().GetField("m_isVisible", BindingFlags.NonPublic | BindingFlags.Instance);
        if (info != null)
        {
            info.SetValue(renderingExtension, visible);
        }
    }
}

我希望它能帮助到一些人:)