1. 程式人生 > >只用最適合的!全面對比主流 .NET 報表控件

只用最適合的!全面對比主流 .NET 報表控件

編程語言 .Net

技術分享圖片

前言

隨著 .NET 平臺的出現,報表相關的開發控件隨著而來,已經有若幹成熟的產品可供開發人員使用,本文旨在通過從不同維度對比目前最流行的4款 .NET報表控件:水晶報表、FastReport、ActiveReports 和 Stimulsoft,給所有報表開發人員在做產品選型時一份全方位的參考。

為什麽需要報表控件

因為微軟在中國幾十年的推廣,.NET作為很多開發團隊開發商業項目時首選的開發平臺。隨著對 Visual Studio IDE的使用,很多開發人員已經習慣了在 VS中完成大量代碼的可視化設計、測試以及調試。

而數據報表,作為商業系統中必不可少的功能(或者成為模塊),隨著這些年大數據、BI、數據決策的流行,數據報表也逐漸成為商業系統中的核心功能(模塊)。

於是,報表控件的出現就是為了極大地簡化開發人員完成復雜數據報表的設計、調試、預覽、打印、導出等功能代碼開發,讓開發人員能夠將精力和時間投入到數據整理、準備以及UI方面。

從最早的微軟報表×××S(SQL Server Reporting Services),水晶報表,到如今市場各式各樣的報表工具,如今各有千秋的報表控件,如何為自己的項目選擇最適合的控件成為每個開發人員必須考慮的問題。

常見 .NET報表控件介紹

  • SQL Server Reporting Services(×××S):它是來自微軟的產品。作為SQL Server上的加載項創建。此報表生成器在T-SQL開發人員中非常流行,主要是因為它包含在MS SQL Server數據庫中。
  • RDLC: 微軟自帶的 RDLC 報表,集成到 Visual Studio 當中,是Visual Studio 自帶的報表工具,簡單易用,也在很多系統開發中得到了廣泛的應用。
  • FastReport.NET:具有悠久歷史的俄羅斯開發商的產品。FR.NET生成器與Microsoft Visual Studio一起工作,並基於.NET框架。當您安裝該程序時,其組件將被添加到VS調色板中。我們在應用程序中使用FR,方法是將組件放置在表單上或通過在代碼中連接庫。就像×××S一樣,它有一個單獨啟動的報表設計器,但您可以使用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:是俄羅斯報表控件廠商,暫時還沒有專門的國內支持團隊,所有的網站資源均為英文,資源比較全面,如果語言沒有障礙的話,資料使用起來也是沒有任何問題。與水晶報表存在一個同樣令人頭疼的問題就是沒有國內的支持團隊,有任何技術問題要麽自己查資料解決,要麽得用英文去郵件或線上溝通。

Stimulsoft report 在線幫助文檔 常見問題手冊

  • ActiveReports:在中國有專業的業務團隊,中文資料全面,如中文幫助手冊,中文入門視頻,中文博客,中文社區支持,金牌服務電話,中文培訓等。因此在幫助國內的企業快速上手,快速解決使用上的困難,占有極大的優勢。

中文技術支持論壇 常見問題手冊(中文) 學習視頻 Demo 代碼

表格類報表的支持程度

國內的系統中,大量存在表格類(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 實現響應式報表功能,具有很好的交互性。
快速創建復雜報表
應用於中國市場中,需要根據國內的特征確適應市場需求,而中國式的復雜報表就是考驗報表工具,是否滿足市場的一大標準,無論是復雜運算的會計報表,還是復雜表頭的匯總統計報表,還是自由度極高的單元格合並報表,每一種典型的報表都是中國報表設計人員的痛點,也是考驗報表工具能否滿足需求的重要標準。Stimulsoft, FastReport,均提供了 交叉表控件,但這種控件只能支持創建多維透視表,無法去靈活的去自定義或修改。如果要實現復雜的報表展示,必須依賴 TextBox 去拼湊實現。ActiveReports提供了一種獨特的控件“矩表,只需要拖拽設計以及自動合並,即可實現中國復雜報表。
多數據源支持
信息系統經過多年積累或新系統的業務數據都是越來越龐雜的,為了安全可能同時存在於不同的數據庫中,因此報表工具一定要同時支持多種主流數據庫,要兼容新型的數據庫源,而且要處理同時支持多數據源的應用場景,而水晶報表目前無法做到多數據源支持,Stimulsoft, FastReport,均不支持同一報表中綁定多個數據源並展示。ActiveReports 支持在同一張報表中綁定多個數據源,並在同一數據控件中展示。
技術服務與支持
無論選擇哪種報表工具,開發人員都需要快速上手和使用,而且會隨著系統的深入開發會有新的需求產生,所以能夠隨時快速獲取技術支持,也是企業選擇的一大重要因素,否則在遇到問題時,開發人員只能自己花費大量的時間和精力去尋找解決方案。相反,如果有專業的技術團隊,可輕松有效的解決產品問題。4個產品中,只有ActiveReports 在國內有廠商級別的支持,FastReport和Stimulsoft在國內有代理商,但無法提供技術支持。
維護升級成本低
選擇報表工具就是為了有效的減少開發成本,所以需要選擇最合適的報表工具,而如果後期系統升級或遷移會帶來大量的工作量時,則會帶來重構的危險,如果報表工具能夠有很好的向上及向下的兼容性,則大大減少了系統升級和遷移的成本。ActiveReports和水晶報表的報表文件是一種文件格式,方便服用及升級。

總結

如題目所講,沒有最好的,只有最適合的,希望報表開發人員能夠通過此篇文章對 .NET 報表控件的選型有所幫助。
本文作者:葡萄城《轉載請申明》

只用最適合的!全面對比主流 .NET 報表控件