最初的计划是从这些对象生成报表数据XML文件,然后使用XSLT将其转换为XHTML报表文件。然后可以使用浏览器控件在应用程序中显示报表。
但是,我注意到存在Microsoft.Reporting.*命名空间,并且从我尝试过的情况来看,其中的类和控件也可以处理我的报表。使用这个是否是个好主意?与XML / XSLT方法相比,它会节省工作吗? Microsoft Reporting框架的限制(如果有)可能会遇到什么问题?
需要考虑以下几点:
1)报告服务是Sql Server的一部分,因此如果您选择这条路,可能会有额外的许可问题。
2)报告服务可以提供Web页面,或者在WinForms中使用完整的分页、排序、子报告、总计等功能。这在XSL中非常困难。它也可以很好地与打印机配合使用。
3)报告服务配有所见即所得的编辑器来构建报告。它并不完美,但比手工制作要容易得多。
4)使用XSL创建XHTML可能会对性能造成真正的影响。XSL作用于整个XML Dom,如果您处理多页报告,则可能是一个大文档。我希望报告服务能够更快地工作。
5)报告服务可以利用整个.Net,因此您可以免费获得许多其他功能。
综上所述,使用报告服务将节省您的时间,除非您的报告要求非常简单。不过,它可能没有那么有趣。
我大部分同意MrTelly的评论,但以下是一些例外和补充:
除非你对XSLT很糊涂并且你的报告数据非常庞大(100+ MB - 请注意我说的是用于报告的数据而不是源数据),否则性能不太可能成为一个重要问题。我们构建了一个XML/XSLT报告系统,它可以将.NET数据集转换为即时报告,并且如果使用正确编写的XSLT,则性能大多数情况下都在子秒级别(对于大型数据集可能需要更长时间,但对于Web应用程序来说并不可怕)。
使用XML/XSLT解决方案的报告布局基本上是无限制的,而Reporting Services则受限于RDL(Microsoft的报告定义语言)中的结构。如果您需要比标准报告结构更复杂的内容,那么使用Reporting Services会让人沮丧。
看起来你也可以从你的对象生成XML,然后从那个XML创建你的本地ReportViewer报告
使用ReportViewer从XML文档构建报告
http://www.c-sharpcorner.com/UploadFile/mahesh/XmlReports04182007115639AM/XmlReports.aspx