在項目中選擇一種好用的報表工具一直是一件很困擾的事情。由於國內項目 報表的特殊需求所以要在.net環境下選擇一種合適的報表,總是讓人覺得不是那 麼的滿意。
從常見項目中使用報表的角度出發,我們使用報表的需求其實很單一,大多 數情況我們只需要這樣一種報表。
1、純平面表格形式。
如果常見的報表都支持,純文本、表格、列表、矩陣、圖片、圖表、儀表、 子報表、嵌套報表的話。實際上真正常用的可能只是,表格、列表和矩陣。首先 、從客戶的技術層次出發,過於復雜的表現表現形式,不見的對客戶有用。一般 報表的使用著都不是電腦的操作高手。此次、客戶喜歡或習慣裡看平面的報表, 不是說下鑽不好,而是客戶希望你將所有可能的信息在一個見面裡全部直觀展現 出來。按照以前我的一個客戶的老板的說法就是,你最好我一打開什麼信息都有 了。所以往往設計出來的報表很不規則,雖然只是一個平面的表格報表。卻難倒 了一片報表工具。
典型的報表格式可能是這樣:(下面是我做過的一個項目中的真實的報表, 在這個項目中有共計報表進100張)
XXXXX集團主要銷售指標完成情況
2、我們需要一個一個斜線、和多行表頭
在這一點上大多數的報表工具幾乎都可能通過變通的方式來滿足需求,但基 本上在導出Excel或其他格式之後以及打印報表的時候,斜線全不見了。很多報 表工具用拼接或表格套表格的方式達到目標,這時有產生了其他方面的問題。如 果是像下面這種斜線,一般報表工具就更加為難了。應對於水晶報表等其他報表 工具,很多用Delphi開發的國產的報表工具還表現不錯,但是要在.net的項目中 用這種報表總是讓人覺得心裡很別扭。
3、報表工具的其他用途
我們公司的一個項目經理喜歡借助報表的預覽和打印功能來完成其他一些功 能,如:合同的打印、單據的打印。誰說這不可以呢。這就要求報表工具最好能 實現一些開放功能的API接口。這一方面外國的報表工具基本上都能支持。只是 感覺好像他們提供的不恨是我們想要的。
4、一些對報表工具的變態的要求
有一個同事來找我幫忙解決這樣一個問題。客戶在導出報表之後,要求用 windows系統自帶的搜索功能,搜索到某個指定關鍵字的文件。很奇怪,水晶報 表導出的word格式文件中,搜索不到漢字在表格中的文件。例如:一個word文件 中有一個表格,如果用表格中的漢字作為搜索的關鍵字,就搜不到了。經查看才 知道,水晶報表導出的word文件,文字全部放在了一個文本框之中,而不是直接 寫到表格裡。最後我給他提供了兩種方案解決,1、讓他自己實現一種導出word 的方法。2、說服客戶用系統自帶的搜索功能。他最終選擇了後者。之所以認為 是變態的要求其實是報表工具的不完美,不是所有的客戶都會妥協。既然我們也 可以是報表工具的客戶,我們也有權利向他們提出這種變態的要求。
很多項目中我們都對報表的強大功能和豐富的表現力要求不是很強烈,根本 就不需要什麼這功能那功能,但我需要它能把它的基本的功能做到極致。很多時 候客戶不是上帝,而是我們的衣食父母。就算你能很快速的滿足他們的90%的需 求,但是只有有10%的需求不能滿足,他們會認為你們不行。一種b/s下極端的通 用的問題解決方案就是。所有的報表有美工完成靜態的html表格.然後又開發人 員在表格中插入數據,或者用asp.net 頁面插入後台代碼(<% %>)的 語法對表格進行循環。不幸的是真的有人這麼做過。
做行業顧問、或者是做企業管理解決方案有時候是一種美麗的神話和騙局。 我甚至不相信sap能真正教導他的大型客戶管理,所做的也只是盡可能滿足客戶 的需求罷了。
在大型的產業中,軟件公司不可能指導客戶管理,更不可能對客戶行業做出 規范。我們的客戶都是上億資產的公司,可能發展了幾十年。而我們只有幾千萬 的資本,發展積累也只不過幾年的時間,就算了解、和追趕也有好多年的差距, 所以我們怎麼可能去規范客戶業務。
如果有行業顧問,不可能出自軟件公司。真正能規范客戶業務的不是軟件公 司,而是客戶自己本身。所以我們所說的規范,也只是是規范我們的軟件操作罷 了,也可能是處於對復雜的業務環境的一種妥協。
寫了這麼多發現有點扯的太多了,到現在為止還沒有進入正題。好了長話短 說,今天主要想說的是微軟的報表,也就是Visual Studio自帶的報表工具。既 然是介紹它那必選先誇他一下。
廣告1:有了微軟報表工具,我再也不為找報表工具發愁了。
廣告2:自從有了微軟報表工具,斜線不用愁了,復合表頭實現了,也在不怕 和客戶談需求了。
廣告3:使用微軟報表,是您.net項目下最佳的選擇。
廣告4:小劉干嘛呢?
研究水晶報表。
別研究了,我給你介紹一件新工具:微軟報表。
還在研究水晶報表?
水晶報表是什麼?
要使用微軟的報表,首先我們用到的是ReportViewer這個控件,然後要將這 個控件指向一個報表文件,可以選擇服務器報表和本地報表兩種模式。及 (RDLC 和RDL)兩種報表文件采用同一種XML格式。有2種工具可以產生報表文件。1是 vs2010,另一個是Report Builder 3.0後者采用office系列的外觀模式,主要是 面向的非開發人員自定義報表。微軟視乎絕的像做報表這樣簡單的事情就不需要 開發人員了。
如果你使用過vs2008的微軟報表工具,你會發現在vs2010中報表設計器發生 了巨大的變更。
編輯器的改良,更具有可操作性和實用性。
集成了全球最好的dundas圖表、儀表控件。
解決了原來的縱向單元格不能合並的問題。使用起來就像操縱html編輯器。
解決了矩陣中動態行、列和靜態列共存的問題。
增加了報表塊的功能。
更完美的互交式排序支持。
更強浏覽器的打印功能。
行頭、列頭的凍結功能。
加上原有的功能,與.net的渾然天成,強大的API接口。幾乎是我心慕中完美 的報表。
最後貼幾張圖片,因為需要實際的復雜點的例子才能夠說明問題,所以有機 會將來用他做一個具體的案例在做說明了。
MSDN中關於Visual Studio 2010版的幫助文檔還沒有更新,大家要學只能先 看sql server 2008的文檔了。