前言
隨着 .NET 平臺的出現,報表相關的開發控件隨着而來,已經有若干成熟的產品可供開發人員使用,本文旨在經過從不一樣維度對比目前最流行的4款 .NET報表控件:水晶報表、FastReport、ActiveReports 和 Stimulsoft,給全部報表開發人員在作產品選型時一份全方位的參考。php
爲何須要報表控件
由於微軟在中國幾十年的推廣,.NET做爲不少開發團隊開發商業項目時首選的開發平臺。隨着對 Visual Studio IDE的使用,不少開發人員已經習慣了在 VS中完成大量代碼的可視化設計、測試以及調試。sql
而數據報表,做爲商業系統中必不可少的功能(或者成爲模塊),隨着這些年大數據、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.NET:具備悠久歷史的俄羅斯開發商的產品。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 Db二、Sybase Adaptive Server Enterprise 等。不支持同一張報表中跨多個數據源。
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 全平臺開發,HTML五、 WinForms、ASP.NET、ASP.NET MVC、WPF。
- ActiveReports 支持 Visual Studio 2010 及以上版本,支持 Visual Studio 全平臺開發,HTML五、 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 在建立圖表時,首先插入圖表,而後綁定對應的數據源。
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 報表控件的選型有所幫助。
本文做者:葡萄城《轉載請申明》