本章介紹除DotNetBar2控制元件套件之外的另外一些常用控制元件,包括Grid++Report報表、條形碼、Excel匯出、圖表控制元件ZedGraph;類似這些控制元件網上免費開源的太少了,經過一番對比和使用感受最後決定把這幾個控制元件整合到EFW框架中供大家選擇使用;
工具/原料
Grid++Report報表
Excel
圖表控制元件
條形碼
方法/步驟
Grid++Report報表
Grid++Report 是一款高效能的報表開發工具,特別適用於資訊管理系統,如ERP、進銷存、財務等軟體的報表開發。針對票據套打進行了專門實現,也是實現票據列印的好工具。Grid++Report是完全可程式設計的報表工具,是製作動態報表的最佳選擇。針對中國式報表的特點進行了很多專門的設計,是為開發中國式報表量身定做的一款報表工具。
框架中把Grid++Report的元件封裝了一個設計報表的工具“報表設計器.exe”,這樣不用安裝報表工具也可以開啟報表檔案進行設計;
如下圖,使用EFW框架開發一張報表,呼叫框架中GridReport物件把從後臺取出的DataTable資料填充到報表中,第二步利用報表工具設計報表檔案,執行程式顯示報表。
Winform程式接收條形碼
傳統獲取條碼槍的資料必須焦點定位在文字框上,這樣條碼的內容才能顯示在文字框上,這種做法有點類似外接鍵盤(其實從訊息傳送上它就相當於一個鍵盤),但是如果沒有輸入焦點,每次得需要滑鼠點一下文字框獲取焦點,比較頻繁的話對使用者來說還是挺痛苦的。我想實現的是,不管什麼情況,只要掃描器一工作,我的程式就能自動啟用,並能獲得當前輸入的條形碼資訊。
實現思路:我用的USB口的條形碼掃描器,仔細分析了一下,掃描成功後,以鍵盤按鍵訊息的形式把條形碼輸入資訊通知給系統。這樣通過鍵盤鉤子就可以方便的獲得該資訊了。但是,怎樣區分資訊是鍵盤還是條形碼輸入的哪?很簡單,條形碼掃描器在很短的時間內輸入了至少3個字元以上資訊,並且以“回車”作為結束字元,在這種思想指引下,很完美的實現了預定功能。
解決上面問題,輸入條碼的時候還會碰到另外一個問題,就是條碼肯定不止一種型別,如:員工工號條碼、單據條碼等,以前的做法就是介面上多擺幾個文字框控制元件,焦點定位哪個文字框就掃描對應的條碼;而用上面窗體接收的方式,不需要焦點那就區分不了了;這時候我們需要在條碼上下文章了,就是條碼生成要定義出一套特定的規則,獲取條碼後,根據這個規則就能判斷哪種型別條碼;條碼的規則可以是按長度、也可以特殊字元,我這建議每種條碼前面帶一個欄位來區分條碼的型別,這種方式比較簡單點;
Excel匯出(NPOI )
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文件進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文件進行讀寫操作。
(一)傳統操作Excel遇到的問題:
1、如果是.NET,需要在伺服器端裝Office,且及時更新它,以防漏洞,還需要設定許可權允許.NET訪問COM+,如果在匯出過程中出問題可能導致伺服器宕機。
2、Excel會把只包含數字的列進行型別轉換,本來是文字型的,Excel會將其轉成數值型的,比如編號000123會變成123。
3、匯出時,如果欄位內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。
4、Excel會根據Excel檔案前8行分析資料型別,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數字的。
(二)使用NPOI的優勢
1、您可以完全免費使用該框架
2、包含了大部分EXCEL的特性(單元格樣式、資料格式、公式等等)
3、支援處理的檔案格式包括xls, xlsx, docx.
4、採用面向介面的設計架構( 可以檢視 NPOI.SS 的名稱空間)
5、同時支援檔案的匯入和匯出
6、基於.net 2.0 也支援xlsx 和 docx格式(當然也支援.net 4.0)
7、大量的例項程式碼
8、你不需要在伺服器上安裝微軟的Office,可以避免版權問題。
9、使用起來比Office PIA的API更加方便,更人性化。
NPOI之所以強大,並不是因為它支援匯出Excel,而是因為它支援匯入Excel,並能“理解”OLE2文件結構,這也是其他一些Excel讀寫庫比較弱的方面。通常,讀入並理解結構遠比匯出來得複雜,因為匯入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把匯入需求和生成需求比做兩個集合,那麼生成需求通常都是匯入需求的子集,這一規律不僅體現在Excel讀寫庫中,也體現在pdf讀寫庫中,目前市面上大部分的pdf庫僅支援生成,不支援匯入。
圖表控制元件ZedGraph
ZedGraph 是一個開源的.NET圖表類庫, 全部程式碼都是用C#開發的。它可以利用任意的資料集合建立2D的線性和柱形圖表。
ZedGraph 的類庫具有很高的靈活性。幾乎圖表的每個層面都可以被使用者修改。同時,為了保證類庫的易用性,所有的圖表屬性都提供了預設值。類庫中包含的程式碼可以根據被劃分的資料來選擇適應的比例範圍和步長、尺寸。 ZedGraph 繼承了Framework中的UserControl介面,所以允許使用者在VS 的IDE 環境中 進行拖放操作。