我确实考虑过自己做一些类似的事情,但只花了一个小时左右,其他工作承诺就受到了阻碍。然而,我在 LinqPad 中做了一个简单的代码原型,它采用 SSRS 报告路径和主报告的 rdl 并返回所有子报告。
这并不多,但它可以帮助您有效地获取子报告方面的项目。
我猜你可以把它变成一个简单的应用程序,但是 LinqPad 让生活变得如此简单,如果你还没有它,可以免费获得它并尝试这段代码。
void Main()
{
string filePath = @"D:\Dev\SSRS Projects\MyReportsAreHerePath\";
var x = XDocument.Load(filePath + @"MyMasterReportNameHere.rdl");
var ns = x.Root.GetDefaultNamespace();
Func<string, report>getSubReports= null;
getSubReports =
fileName => new report
{
name = fileName,
subReports =
XDocument
.Load(filePath + fileName + ".rdl")
.Descendants(ns + "Subreport")
.Select(sr=>getSubReports(sr.Element(ns + "ReportName").Value))
};
getSubReports("MyMasterReportNameHere").Dump();
}
public class report
{
public string name{get;set;}
public float top { get; set; }
public IEnumerable<report> subReports {get;set;}
}
问候, 艾尔