一.分析對象html
用友華表Cell 5.0、水晶報表Crystal Report 9.2。數據庫
二.功能描述服務器
1.用友華表功能描述ide
1.1 特色:工具
提供相似於Excel界面的超級報表進行報表設計,包括數據填充、插入圖表、單元格修飾等功能;同時提供表格、單元格、打印、記錄集等方法和屬性爲開發者解決報表二次開發。性能
1.2 功能:測試
1.2.1 報表設計編碼
超級報表提供了報表的衆多設計功能,操做相似於Excel。在開發過程當中,可將Cell50Control控件直接嵌入,利用組件提供的方法,響應用戶對報表的操做;spa
1.2.2 與數據庫鏈接插件
華表提供了相應的數據庫和記錄集方法,但功能不夠完善,同時欠缺穩定。能夠自定義數據庫方法,將數據讀入DataAdapter中後,根據華表的行號、列號創建一一對應關係。
1.2.3 打印和打印預覽
組件提供了基本的打印方法,可以完成打印預覽,翻頁,打印設置等諸多功能。尤爲提供了設置分頁符功能,能夠根據開發者或用戶須要決定每頁所顯示的行(列)數。
1.2.4 文件格式兼容性
華表報表文件格式爲.CLL。同時還支持與Word文檔、Excel、Html、PDF等多種格式。
2.水晶報表功能描述
2.1 特色:
水晶報表自己是一個集應用與設計爲一體的報表平臺。用戶在使用報表時,能夠直接經過界面操做,不須要編寫一行代碼便可完成報表對數據表數據的操做。同時還包括統計、分組、插入圖表等功能。水晶報表還提供了Crystal語言規範,爲高級用戶提供處理複雜報表的可能。同時,在Visual Studio.Net中嵌入了Crystal Report組件,爲二次開發提供了方便。
2.2 功能:
2.2.1 報表設計
用戶能夠直接使用Crystal Report來進行報表設計。在開發過程當中,開發者能夠經過直接插入新的或已有的報表文件,並與CrystalReportViewer相鏈接。用戶能夠在開發者二次開發的平臺下進行簡單的報表設計或顯示、打印已有報表。
2.2.2 自定義模板
水晶報表中的模板實際上是與報表文件是一致的。模板提供了報表數據的顯示格式,除系統自己提供的模板文件外,用戶也能夠自定義模板,或者把已有的報表文件定義爲模板。定義好模板,只須要添加或改變模板和數據集之間的鏈接,便可顯示具體內容。
2.2.3 打印和打印預覽
CrystalReportViewer工具欄上提供了基本的打印操做。開發者也能夠隱藏該工具欄,添加按鈕,根據組件提供的Page Object和PrintStatus Object等對象方法編寫代碼,實現用戶須要的功能。
2.2.4 文件格式兼容性
能夠輸出包括.PDF、.Xls、.html等多種格式的文件。水晶報表也支持與XML文件的轉換。但轉換後的XML文件是水晶報表特定的Xml Schema。
三.華表與水晶報表的比較
1.華表的優點與劣勢
1.1 華表的優點
1.1.1 設計符合中國人習慣
超級報表的界面和操做都與Excel相相似,同時在設計表格的格式上,包括單元格的拆分和合並都很是方便,容易定製很是複雜的報表。
1.1.2 橫向報表的設計
華表對於數據的顯示是以行號和列號來定義的,所以在華表中縱向和橫向的顯示方法是相同的,只須要改變行、列的位置就能夠了。因爲華表提供了插入分頁符的方法,使得橫向報表的分頁能夠很是簡單地完成。
1.2 華表的劣勢
1.2.1 對數據庫的訪問能力不足
華表雖然提供了數據庫的訪問方法,但穩定性不夠好。對於SQL語句的支持不夠。所以須要自定義數據庫方法,經過代碼實現,加大了開發者二次開發的代碼量。同時,用戶在設計報表時,沒有直接提供與數據庫相連的控件。
1.2.2 用戶自定義模板功能
雖然用戶能夠在超級報表中定義本身的報表格式,以造成模板。可是模板文件不能和數據集的數據創建有效鏈接。也就是數據須要用戶人工輸入,而不是直接經過代碼從數據集中獲得。所以後期的統計等運算功能就沒法經過編碼實現。
1.2.3 組件穩定性差,爲二次開發帶來測試隱患
華表組件版本雖然在不斷升級中,但總體性能欠缺必定的穩定性。組件所提供的方法雖然可行,但在二次開發中每每會給程序帶來意想不到的bug。同時,華表所能承受的數據交換量,也值得懷疑,對大量的數據處理顯得能力不足。
2.水晶報表的優點與劣勢
2.1 水晶報表的優點
2.1.1 功能強大、操做方便快捷
水晶報表對於報表的設計支持是很是強大的。用戶能夠根據水晶報表完成顯示、統計、分組、插入圖表等多種功能。對於子報表、組合報表的設計也很是簡單。水晶報表還提供了設計報表的嚮導,輕鬆完成報表設計。數據庫專家、節專家等功能爲用戶對數據庫的處理提供了直觀的操做方法。只須要拖動數據表的字段對象,就能夠讀取數據表的記錄內容,並自動完成分頁。
2.1.2 功能完善的組件方法
水晶報表的組件方法很是豐富,涵蓋了數據庫操做、格式設計、打印、文件轉換等多種功能。這些方法爲二次開發提供了便利。在Visual Studio.Net中,報表文件是一個項目文件,它以類的形式存在,並經過CrystalReportViewer對報表文件進行顯示。CRAXDDRT組件則提供了針對各類對象的方法,例如新建、打開報表,創建、修改數據庫鏈接等。還能夠經過FieldObject中的相關對象接受公式或參數對數據表的操做。同時也能夠經過TextField在報表中顯示不一樣的內容。
2.1.3 用戶可自定義模板
用戶自定義模板與設計報表徹底相同。同時,定義好的模板能夠經過數據庫方法直接讀取數據表的數據。模板的使用能夠大大提供報表設計的工做效率。
2.2 水晶報表的劣勢
2.2.1 設計報表格式困難
與華表偏偏相反的是,水晶報表對複雜報表的支持遠遠不夠。因爲水晶報表不是採用單元格的方式,當用戶須要合併或拆分單元格時,沒有直接的方法支持。同時,很難實現橫向報表。水晶報表是以節(Section)的形式縱向顯示。數據表的列名顯示在頁眉節,列的內容在詳細資料節中顯示,水晶報表根據條件自動讀出數據表數據縱向顯示並分頁。
2.2.2 不支持對報表文件的直接修改
CrystalReportViewer只顯示報表文件的內容,而不支持對報表內容的實時修改。如要編輯報表數據,只有經過應用程序調用存儲過程直接對數據表進行修改,而後Refresh報表顯示。
四.總結及個人評價
從各自的功能和優缺點來看,二者的優點和劣勢都很是明顯,且偏偏相異。從總體性能看,水晶報表更穩定,功能更完善和強大。尤爲是水晶報表中對數據庫的支持,不管是性能上,仍是提供的方法上,都具備華表所不具有的優點。然而,若是從報表顯示格式來看,華表無疑更能知足中國人對報表的要求。
若是要在報表組件的基礎上二次開發報表平臺,我認爲選擇水晶報表是更佳方案。緣由以下:
1.組件性能穩定
在進行二次開發時,若是所使用的組件性能不穩定,Bug百出,必然會影響開發進度,同時爲系統測試帶來很大的困難。
2.對數據庫的支持強大
報表與電子表格最大的區別是它的數據處理能力。經過數據庫而不是讀取單元格的數據來完成諸如排序、統計、分類彙總、查詢、更新,使得報表對數據處理的性能能夠獲得很大的提升。而水晶報表在一點上功能很是強大。
3.支持B/S和C/S模式的開發
雖然華表也提供了插件以支持B/S模式開發,但因爲其插件是客戶端組件,在軟件部署時會帶來很大的不便。且在客戶端和服務器端的數據交換能力方面,水晶報表在技術上很是優秀。