只用最适合的!全面对比主流 .NET 报表控件

前言
随着 .NET 平台的出现,报表相关的开发控件随着而来,已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的 4 款 .NET 报表控件:ActiveReports、水晶报表、FastReport 和 Stimulsoft,给所有报表开发人员在做产品选型时一份全方位的参考。
为什么需要报表控件
因为微软在中国几十年的推广,.NET 作为很多开发团队开发商业项目时首选的开发平台。随着对 Visual Studio IDE 的使用,很多开发人员已经习惯了在 VS 中完成大量代码的可视化设计、测试以及调试。
而数据报表,作为商业系统中必不可少的功能(或者成为模块),随着这些年大数据、BI、数据决策的流行,数据报表也逐渐成为商业系统中的核心功能(模块)。
于是,报表控件的出现就是为了极大地简化开发人员完成复杂数据报表的设计、调试、预览、打印、导出等功能代码开发,让开发人员能够将精力和时间投入到数据整理、准备以及 UI 方面。
从最早的微软报表 SSRS(SQL Server Reporting Services),水晶报表,到如今市场各式各样的报表工具,如今各有千秋的报表控件,如何为自己的项目选择最适合的控件成为每个开发人员必须考虑的问题。
常见 .NET 报表控件介绍
SQL Server Reporting Services ( SSRS ):它是来自微软的产品。作为 SQL Server 上的加载项创建。此报表生成器在 T-SQL 开发人员中非常流行,主要是因为它包含在 MS SQL Server 数据库中。
RDLC: 微软自带的 RDLC 报表,集成到 Visual Studio 当中,是 Visual Studio 自带的报表工具,简单易用,也在很多系统开发中得到了广泛的应用。
FastReport:具有悠久历史的俄罗斯开发商的产品。FR.NET 生成器与 Microsoft Visual Studio 一起工作,并基于.NET 框架。当您安装该程序时,其组件将被添加到 VS 调色板中。我们在应用程序中使用 FR,方法是将组件放置在表单上或通过在代码中连接库。就像 SSRS 一样,它有一个单独启动的报表设计器,但您可以使用 ReportDesigner 组件将设计器嵌入到应用程序中。
ActiveReports: 已经有 20 余年历史的老牌报表控件,是 .NET 平台的全方位的报表解决方案,其特点是无须编码实现各类报表设计。特有的矩表控件,旨在解决中国式复杂报表,另在报表打印,呈现等方面行业领先。
Stimulsoft Report:Stimulsoft 拥有大量的报表相关工具,比如报表生成器,报表设计器,Reports for.NET 、Web、MVC、WPF、Silverlight、Flex、PHP、Java、Mobile、WinRT 等。
水晶报表:是由 Crystal Services 公司开发的,主要用于设计及产生报表。经过多次收购,已经被 SAP 公司收购,从 12 版本发布到 16 版本,现在因为水晶报表为 SAP 服务,所以更加注重数据分析,而不注重报表易于设计。
全面对比
本文将从以下几个维度对比每款 .NET 报表控件
数据源连接(是否支持跨数据源)
与 Visual Studio 的集成度
报表设计过程(设计器)
中文支持程度
表格类报表开发能力
图表类报表开发能力
浏览器的兼容性
授权及部署
数据源支持以及能否跨数据源链接
在实际的项目中,往往数据会存在各种不同的数据库或文件系统,甚至是在线的动态数据,是否能够支持更多的数据源以及能否同时在一张报表中支持多数据源得数据同时显示并关联,这将极大的简化开发人员的工作。
水晶报表支持常用的数据库 Access,Excel,XML 文件,OLE DB 驱动,ODBC 驱动,JDBC 驱动的任意数据库,SalesForce 数据等


FastReport 支持常用的数据库:FastReport 使用 ADO.NET 数据源,号称支持连接到任何数据库,如 Access、OLE DB 驱动、ODBC 驱动、SQL、和 XML、CSV 数据,并可以对数据进行分类排序、数据过滤。只支持数据库单连,不支持同一张报表中跨多个数据源。

StimulSoft Report 支持常用的数据库,Access、Oracle、MySQL、PostgreSQL、SQLite、XML 等,除此之外还支持如 Firebird、IBM Db2、Sybase Adaptive Server Enterprise 等。不支持同一张报表中跨多个数据源。

ActiveReports 支持常用的数据库:Oracle、SQLServer、Access、XML、CSV、JSON、ODBC 驱动、即 OLE DB 驱动所支持的数据库 .除了常用的关系型数据库外,ActiveReports 支持运行时绑定数据源,如 DataTable 数据源,Object 数据源,Json 数据源等。
ActiveReports 在连接常用数据库 SQL Server,Access,Oracle,Json 等提供的可视的链接窗口,用户不需要记住每一种数据库的连接字符串,的写法,只需要输入对应的用户名和密码,ActiveReports 会自动生成连接字符串,所以对于用户来说如此可以节省很多时间,这点是所有.NET 报表控件中最易用的。并且,ActiveReports 是唯一一个自同一张报表支持跨数据源的报表控件。


ActiveReports 还有一个亮眼的地方就是 [可视化数据查询设计器] ,对比了这几个产品的类似设计器后,其他产品最多只能提供两个表的关联,而 ActiveReports 对于表的数量没有限制,而且只需要拖拽数据表到 UI 界面,做相关键的关联就可自动生成 SQL 语句。这也为不熟悉 SQL 语法的开发人员提供了方便。

与 VS 的集成度
基于 .NET 平台开发,Visual Studio IDE 是开发人员最熟悉的工具,如果能够与 Visual Studio IDE 紧密集成,将极大的减少开发时的窗口切换损耗,同时在 IDE 中以熟悉的操作方式能够极大的提高效率。
水晶报表:支持 Visual Studio 2010 及以上版本,支持开发 WPF、WinForms、ASP.NET 项目模板。

FastReport:支持 Visual Studio 最新版,支持 Visual Studio 2005 及以上版本,支持开发 WPF、WinForms、ASP .NET、MVC 项目。


Stimulsoft Report:支持 Visual Studio 全平台,但是在安装集成后,需要用户手动添加到工具箱。对于在 MVC 中和 ASP .NET中使用 HTML5 很多功能不支持,如创建动态报表,钻取功能。所以如果考虑使用 HTML5 作为输出的话,可能就需要考虑其他产品。
对于所有内部的报表格式,并不是在各个平台通用的,如内部的 MDZ、MDX、MRX 格式,只能在 WinForms、WPF、ASP .NET、MVC 使用。所以要想从一个平台迁移到另一个平台,需要考虑创建通用的报表文件格式。

ActiveReports 支持 Visual Studio 2010 及以上版本,支持 Visual Studio 全平台开发,HTML5、WinForms、ASP .NET、ASP .NET MVC、WPF。

ActiveReports 支持 Visual Studio 2010 及以上版本,支持 Visual Studio 全平台开发,HTML5、WinForms、ASP .NET、ASP .NET MVC、WPF。
报表设计过程(设计器)
水晶报表:设计器风格同 Word 编辑器的风格,多了数据源管理等窗口。习惯使用 Word 编辑器的用户,可以快速上手。水晶报表设计器只支持一种报表类型,按照区域划分的报表类型,将报表分为不同的保镖头,页眉详细数据区域,报表尾,页脚。

FastReport:报表设计器顶部有五个选项可以进行切换的选择需要的设置左边是工具栏的选择,通过双击进行控件的选择,FastReport 只支持一种报表类型,按照区域划分的报表类型简称区域报表,将报表分为报表头、页眉、明细、页脚。

StimulSoft Report:设计器风格和体验也是与 Office 保持一致,所以初次接触 StimulSoft Report 不会感觉很陌生。 但要是要开始创建报表,可能得需要跟着文档一步一步做。
StimulSoft Report 不提供与 Visual Studio 的集成报表设计器,所以导致用户无法在 Visual Studio 中进行报表设计。

ActiveReports:报表设计器整体风格与 Visual Studio 一致,显得比较专业,使用上会稍微有点难度,但还好 ActiveReports 提供设计器源码,开发人员可根据需求去自定制整个设计器。包含了报表设计,报表预览,报表导出功能。设计器面向用户群为非技术人员,采用拖拽编辑即可实现全类型的报表设计。
ActiveReports 支持四种报表类型,基于代码的区域报表,基于模板的区域报表,页面报表,RDL 报表,用于满足不同的报表设计需求。
ActiveReports 提供集成 VS 的报表设计器和独立的报表设计器,这样用户在打开 Visual Studio 中就不需要离开 Visual Studio 去设计报表。大大提升了开发便利。

中文支持程度
报表控件发布后,最终用户会看到多个和报表控件相关的多个 UI 组件,参数面板、打印预览、工具条等,除了中文和英文,对其他语种的支持也是考量报表控件适用程度的一个点。
同时,对于报表控件这样入门比较困难的控件,是否能够轻松的获得中文资源、帮助、文档、技术支持,也会决定此控件在项目究竟能否发挥其该有功能的重要前提。
中文 UI 支持
水晶报表:支持简体中文,除中文之外还支持其他 27 种常用语言,这些语言资源文件已经内嵌在产品中;可直接使用。

FastReports:支持简体中文,除中文之外还支持其他 27 种常用语言,这些语言资源文件已经内嵌在产品中;可直接使用。
Stimulsoft:内嵌了 28 种语言支持,设置本地化语言,非常简单,只需要通过切换语言,整个界面会立即切换成当前语言版本,这个使用起来会特别方便,也不需要开发人员去做特殊的本地化设置,再根据操作系统自动切换。

ActiveReports 对于语言支持没有限制,已内置好的资源包包含英文,日文,简体中文,如果需要支持其他语言,ActiveReports 提供了本地化资源包的要求,这样不管最终用户是什么语言,都可以定制出不同的 UI 界面。
中文技术支持
水晶报表:现在属于 SAP 公司下的报表工具,在国内没有专门的技术服务团队,相关资料以及服务支持是英文的。因此可能在寻找技术支持过程中会比较耗费时间。而且无法通过直接的沟通来解决,如电话,会议,现场培训等。另外官方网站也是在国外,因为网络问题,可能会导致下载试用过程不顺畅。
FastReport:在中国没有专门的技术团队负责产品的售前、售后支持,没有对应丰富的中文资料例如:视频、中文文档,实例 demo、论坛。产品提供商也不提供售后技术支持,在购买前需要自己先完全评估好产品,开发中遇到任何技术上的问题都只能自己解决。
Stimulsoft:是俄罗斯报表控件厂商,暂时还没有专门的国内支持团队,所有的网站资源均为英文,资源比较全面,如果语言没有障碍的话,资料使用起来也是没有任何问题。与水晶报表存在一个同样令人头疼的问题就是没有国内的支持团队,有任何技术问题要么自己查资料解决,要么得用英文去邮件或线上沟通。
ActiveReports:在中国有专业的业务团队,中文资料全面,如中文帮助手册,中文入门视频,中文博客,中文社区支持,金牌服务电话,中文培训等。因此在帮助国内的企业快速上手,快速解决使用上的困难,占有极大的优势。
表格类报表的支持程度
国内的系统中,大量存在表格类( Excel 类、文档类)的数据报表开发,如统计汇总、检测报告、表单等。
能否很好的支持此类报表的设计和开发,往往是能否采用此控件的决定性因素
水晶报表:提供交叉表控件,OLAP 报表控件,可以创建于 Excel 中类似的单维度和多维度数据透视表。但灵活性不强,只能创建单表头的数据透视表。无法修改或添加总计,汇总公式,或是自定义单元格合并。更无法支持中国复杂报表的表角斜线及无规则的单元格合并。

FastReports:提供矩阵( Matrix )控件,用来进行复杂报表的设计,可以实现单维度和多维度的数据透视表,可以进行自动合计和警示功能,但是它设计起来比较复杂,灵活性差。并且不支持单元格的自动合并,不能进行复杂表头的设计。

Stimulsoft:提供了表格控件和交叉表( Cross Tab )分别解决列表泪报表和数据透视表的需求。但是表格控件并不是严格意义的表格,没有表头表尾详细数据的概念,是用单元格拼起来的,所以无法控制每一行的显示。交叉表可以创建多维合计透视表,但是在合计表达式只能选择默认的 Sum,而且无法创建复杂的表头。


ActiveReports:提供表格控件、矩表控件专为创建 Word 类报表及 Excel 类表格报表以及各式复杂中国式报表。
创建复杂报是 ActiveReports 特长,使用已提供的表格和矩表,即可灵活的实现单元格合并,多为复杂表头报表。



图表类报表的支持程度
随着业务系统中对图表、Dashboard、大屏类应用需求的不断增强,图表的支持类型和外观也是考量报表控件的重要方面
图表类型(注: 红色标注是各品牌特有的)
水晶报表支持图表类型包括:条形图、柱形图、折线图、面积图、饼图、散点图、气泡图、甘特图、量表图、漏斗图、三维图表、雷达图。

FastReport 支持图表类型包括:条形图、柱形图、折线图、面积图、饼图、散点图、气泡图、甘特图、量表图、漏斗图、三维图表、雷达图。

Stimulsoft 报表支持图表类型:支持 38 种类型,图表 UI 采用扁平化设置,而且也为设计人员提供了多套的 UI 主题选择,所以在美观程度上做的是最好的。

ActiveReports 报表支持图表类型:条形图,柱形图,折线图,面积图,饼图,散点图,气泡图,甘特图,漏斗图,三维图表,金融图,三维图表,多 Y 轴图表,复合图表,四象限图。

图表设计步骤
水晶报表
水晶报表必须为图表准备数据,数据准备完成后,才可以使用图表控件,对于运行时报表数据源的报表,创建图表就不会很方便。

FastReports
FastReports 在创建图表时,首先插入图表,然后绑定对应的数据源。

Stimulsoft Report


ActiveReports
ActiveReports 在创建图表时,只需要为报表提供可用的数据字段即可,因此在数据绑定中相对方便。


浏览器的兼容性
水晶报表:支持 IE 10 及以上,Firefox ESR 52.0 及以上,Edge14.14 及以上,Chrome 浏览器,不支持 IE 10 以下的浏览器。
FastReport:报表支持当前所有的浏览器 IE、谷歌、火狐、Safari 等
Stimulsoft:支持 IE、Firefox、Chrome、Safari,但要求在网页端浏览报表需要安装不同的插件,如 Flash,ActiveX 等。
ActiveReports:IE 9+、Firefox 20 +、Chrome 30 +、Safari 6.0+
部署后的修改
从事项目开发的同学,肯定对发布后的修改深恶痛绝,往往发布后的频繁修改会造成项目迟迟无法交付、改的越多 Bug 越多的情况,对于报表模块,类似发布后的修改更是家常便饭,如何在项目发布后快速的对应需求变更并保证质量,这是每个项目负责人必须要考虑的问题
水晶报表:报表需求无论变化多么微小,都需要在修改后重新编译部署整个项目,所以在后期维护成本是非常大的,并且没有单独的设计器提供给最终用户新增报表。
FastReport:非开发客户无法自主进行报表的设计,当报表程序发布后客户如果想要进行简单的修改都是需要返回重新设计及编译。
Stimulsoft:是针对不同的平台,需要将设计好的报表文件根据要发布的平台去编译成对应的文件,所以发布后,如果有需要更改报表的需求,整个项目也需要重新发布维护,另外同一张报表文件,无法在不同平台无障碍使用。
ActiveReports:报表设计文件作为独立的 XML 格式的文件,同时也为开发人员提供最终用户设计器,可修改报表,修改完成后只需要替换旧文件,就可正常使用,不需要重新编译发布。
全部打分

如何选型
无论是哪一个报表控件,都有其最适合的场景,只有明确了项目中的明确需求,才能使控件真正节约开发成本,提高产品质量。以下是在选型时,需要考虑的几个方面:
浏览器兼容性
浏览器的兼容性,水晶报表是基于 IE 浏览器内核开发的,所以对 IE 浏览器有很好的兼容性,但是对于其他的主流报表如:谷歌、火狐、游猎等浏览器的兼容性就不是很好,在网页端展示的时候亲和度比较低,但是 ActiveReports,FastReport,Stimulsoft 在浏览器支持方面特别是 IE、谷歌、火狐、游猎浏览器具有很好的兼容性,在网页端展示的有很好的亲和度不会出现误差。
部署零负担
在网页端的展示,水晶报表需要安装一个 ActiveX 的插件,并且交互性差。Stimulsoft Reports 需要在客户端安装 Flash,ActiveX 等插件才可以预览。ActiveReports 和 FastReport 在网页端不用安装任何插件,支持 HTML5,HTML Viewer,Flash Viewer,Raw HTML,Acrobat Reade 等
支持移动端
如今越来越多的用户倾向移动办公,因此对移动端的需求也是大幅度增长,而水晶报表因为现在主要为 SAP 辅助数据分析,所以对移动端报表支持几乎没有,FastReport 支持移动端报表展示。Stimulsoft 基于 HTML5 技术实现移动端,但 HTML5Viewer 功能会有所限制,比原生的 .NET 功能少了很多。ActiveReports 提供了基于 HTML5 技术 HTML5Viewer 实现响应式报表功能,具有很好的交互性。
快速创建复杂报表
应用于中国市场中,需要根据国内的特征确适应市场需求,而中国式的复杂报表就是考验报表工具,是否满足在网页端的展示,水晶报表需要安装一个 ActiveX 的插件,并且交互性差。Stimulsoft Reports 需要在客户端安装 Flash,ActiveX 等插件才可以预览。ActiveReports 和 FastReport 在网页端不用安装任何插件,支持 HTML5,HTML Viewer,Flash Viewer,Raw HTML,Acrobat Reade 等支持创建多维透视表,无法去灵活的去自定义或修改。如果要实现复杂的报表展示,必须依赖 TextBox 去拼凑实现。ActiveReports 提供了一种独特的控件“矩表,只需要拖拽设计以及自动合并,即可实现中国复杂报表。
多数据源支持
信息系统经过多年积累或新系统的业务数据都是越来越庞杂的,为了安全可能同时存在于不同的数据库中,因此报表工具一定要同时支持多种主流数据库,要兼容新型的数据库源,而且要处理同时支持多数据源的应用场景,而水晶报表目前无法做到多数据源支持,Stimulsoft,FastReport,均不支持同一报表中绑定多个数据源并展示。ActiveReports 支持在同一张报表中绑定多个数据源,并在同一数据控件中展示。
技术服务与支持
无论选择哪种报表工具,开发人员都需要快速上手和使用,而且会随着系统的深入开发会有新的需求产生,所以能够随时快速获取技术支持,也是企业选择的一大重要因素,否则在遇到问题时,开发人员只能自己花费大量的时间和精力去寻找解决方案。相反,如果有专业的技术团队,可轻松有效的解决产品问题。4 个产品中,只有 ActiveReports 在国内有厂商级别的支持,FastReport 和 Stimulsoft 在国内有代理商,但无法提供技术支持。
维护升级成本低
选择报表工具就是为了有效的减少开发成本,所以需要选择最合适的报表工具,而如果后期系统升级或迁移会带来大量的工作量时,则会带来重构的危险,如果报表工具能够有很好的向上及向下的兼容性,则大大减少了系统升级和迁移的成本。ActiveReports 和水晶报表的报表文件是一种文件格式,方便服用及升级。
总结
如题目所讲,没有最好的,只有最适合的,每个项目都具备不同的特点,
财务系统中,对表格类的报表的要求很高,
管理决策系统,偏重于图表和大屏的展现
生产系统,偏重数据类型的支持
事业单位或政府们的内部系统,因存在低版本的 IE 浏览器,需要考虑浏览器支持的通用性
数据分析部门,要考虑报表在最终用户处的频繁修改和定制
……
最后,希望报表开发人员能够通过此篇文章对 .NET 报表控件的选型有所帮助。