Ssrs 2008 SSRS2008:LocalReport导出为HTML/fragment

Ssrs 2008 SSRS2008:LocalReport导出为HTML/fragment,ssrs-2008,Ssrs 2008,我需要将本地RDL报告导出为HTML,最好是HTML片段。在2005年,它没有得到官方的支持,但有一个。在SSRS2008中,他们似乎放弃了这种支持(当使用反射枚举时,支持的扩展中没有HTML扩展),而是使用二进制格式,我怀疑有人会乐意解析这种格式。实际上,它似乎根本不是关于HTML的 现在,有没有一种使用SSRS2008本地报告呈现HTML的方法 请注意,我使用的是VS2008,但使用的是从VS2010 Beta 2 reportviewer安装的报表程序集。正在查找相同的内容。我想我们可以尝

我需要将本地RDL报告导出为HTML,最好是HTML片段。在2005年,它没有得到官方的支持,但有一个。在SSRS2008中,他们似乎放弃了这种支持(当使用反射枚举时,支持的扩展中没有HTML扩展),而是使用二进制格式,我怀疑有人会乐意解析这种格式。实际上,它似乎根本不是关于HTML的

现在,有没有一种使用SSRS2008本地报告呈现HTML的方法


请注意,我使用的是VS2008,但使用的是从VS2010 Beta 2 reportviewer安装的报表程序集。

正在查找相同的内容。我想我们可以尝试通过反射来获取ReportViewer的渲染输出


我可能会玩一会儿,看看我能想出什么来。

我找到了一种方法,但不是很好。 将报告导出到mhtml(由SSRS2008支持) 然后使用
System.Windows.Forms.WebBrowser
渲染mhtml。 在
wb.DocumentText中,
属性将是完整的html页面

这不是很好,因为您需要一个文件(作为WebBrowser的url)。
而且,如果我在ASP.NET应用程序中使用WebBrowser,我需要在另一个线程中使用STA ApartmentState处理它。

如果您可以获得mht,则可以使用提取它的内容

这里有一个nu get包(MIMER需要.NET Framework 3.5):

用法:

var Viewer = new Microsoft.Reporting.WebForms.ReportViewer();
EnableFormat(Viewer, "HTML4.0");
您可能也会发现这很有趣:


我没有找到答案,所以我只是在ASP.NET MVC应用程序中使用ASP.NET报表查看器。技巧链接:您可以加载HTML,而不必在WebBrowser控件中加载文件。只是不是mht。
private static void EnableFormat(ReportViewer viewer, string formatName)
{
     const BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;

     FieldInfo m_previewService = viewer.LocalReport.GetType().GetField
     (
         "m_previewService",
         Flags
     );

     MethodInfo ListRenderingExtensions = m_previewService.FieldType.GetMethod
     (
         "ListRenderingExtensions",
         Flags
     );

     object previewServiceInstance = m_previewService.GetValue(viewer.LocalReport);

     IList extensions = ListRenderingExtensions.Invoke(previewServiceInstance, null) as IList;

     PropertyInfo name = extensions[0].GetType().GetProperty("Name", Flags);

     foreach (object extension in extensions)
     {
         if (string.Compare(name.GetValue(extension, null).ToString(), formatName, true) == 0)
         {
             FieldInfo m_isVisible = extension.GetType().GetField("m_isVisible", BindingFlags.NonPublic | BindingFlags.Instance);
             FieldInfo m_isExposedExternally = extension.GetType().GetField("m_isExposedExternally", BindingFlags.NonPublic | BindingFlags.Instance);
             m_isVisible.SetValue(extension, true);
             m_isExposedExternally.SetValue(extension, true);
             break;
         }
     }
 }
var Viewer = new Microsoft.Reporting.WebForms.ReportViewer();
EnableFormat(Viewer, "HTML4.0");