二十六、【開源框架】EFW框架Winform前端開發之Grid++Report報表、條形碼、Excel導出、圖表控件


回《【開源】EFW框架系列文章索引》       

EFW框架源代碼下載V1.2:http://pan.baidu.com/s/1hcnuA

EFW框架實例源代碼下載:http://pan.baidu.com/s/1o6MAKCa

 

      前言:本章介紹除DotNetBar2控件套件之外的另外一些常用控件,包括Grid++Report報表、條形碼、Excel導出、圖表控件ZedGraph;類似這些控件網上免費開源的太少了,經過一番對比和使用感受最后決定把這幾個控件整合到EFW框架中供大家選擇使用;

本文要點:

1.Grid++Report報表

2.Winform程序接收條形碼

3.Excel導出NPOI

4.圖表控件ZedGraph

 

1.Grid++Report報表

參考資料:http://www.rubylong.cn/index.htm

Grid++Report 是一款高性能的報表開發工具,特別適用於信息管理系統,如ERP、進銷存、財務等軟件的報表開發。針對票據套打進行了專門實現,也是實現票據打印的好工具。Grid++Report是完全可編程的報表工具,是制作動態報表的最佳選擇。針對中國式報表的特點進行了很多專門的設計,是為開發中國式報表量身定做的一款報表工具。

框架中把Grid++Report的組件封裝了一個設計報表的工具“報表設計器.exe”,這樣不用安裝報表工具也可以打開報表文件進行設計;

 

 

如下圖,使用EFW框架開發一張報表,調用框架中GridReport對象把從后台取出的DataTable數據填充到報表中,第二步利用報表工具設計報表文件,運行程序顯示報表。

 

2.Winform程序接收條形碼

參考資料:http://blog.sina.com.cn/s/blog_5387be9b0100osh8.html

       傳統獲取條碼槍的數據必須焦點定位在文本框上,這樣條碼的內容才能顯示在文本框上,這種做法有點類似外接鍵盤(其實從消息傳送上它就相當於一個鍵盤),但是如果沒有輸入焦點,每次得需要鼠標點一下文本框獲取焦點,比較頻繁的話對使用者來說還是挺痛苦的。我想實現的是,不管什么情況,只要掃描器一工作,我的程序就能自動激活,並能獲得當前輸入的條形碼信息。

       實現思路:我用的USB口的條形碼掃描器,仔細分析了一下,掃描成功后,以鍵盤按鍵消息的形式把條形碼輸入信息通知給系統。這樣通過鍵盤鈎子就可以方便的獲得該信息了。但是,怎樣區分信息是鍵盤還是條形碼輸入的哪?很簡單,條形碼掃描器在很短的時間內輸入了至少3個字符以上信息,並且以“回車”作為結束字符,在這種思想指引下,很完美的實現了預定功能。

       解決上面問題,輸入條碼的時候還會碰到另外一個問題,就是條碼肯定不止一種類型,如:員工工號條碼、單據條碼等,以前的做法就是界面上多擺幾個文本框控件,焦點定位哪個文本框就掃描對應的條碼;而用上面窗體接收的方式,不需要焦點那就區分不了了;這時候我們需要在條碼上下文章了,就是條碼生成要定義出一套特定的規則,獲取條碼后,根據這個規則就能判斷哪種類型條碼;條碼的規則可以是按長度、也可以特殊字符,我這建議每種條碼前面帶一個字段來區分條碼的類型,這種方式比較簡單點;

 

使用EFW框架獲取掃描槍的數據,首先窗體代碼重寫繼承的BaseForm基類中的doBarCode方法,就可以從參數barCode中獲取掃描出來的數據;再根據掃描出來的條碼規則判斷條碼類型,然后進行相關業務操作;

 

3.Excel導出(NPOI )

參考資料:http://npoi.codeplex.com/

使用 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、支持處理的文件格式包括xlsxlsxdocx.

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庫僅支持生成,不支持導入。

 

 

如上圖,使用EFW框架導出Excel文件很簡單,調用ExcelHelper對象的Export方法,此方法帶四個參數,dtSource數據源,strHeaderText為Excel的標題,columnNames設置數據源的英文列名轉換為中文名稱,strFileName導出Excel文件名;

4.圖表控件ZedGraph

參考資料:http://www.cnblogs.com/gaizai/archive/2010/02/22/1671154.html

ZedGraph 是一個開源的.NET圖表類庫, 全部代碼都是用C#開發的。它可以利用任意的數據集合創建2D的線性和柱形圖表。

ZedGraph 的類庫具有很高的靈活性。幾乎圖表的每個層面都可以被用戶修改。同時,為了保證類庫的易用性,所有的圖表屬性都提供了缺省值。類庫中包含的代碼可以根據被划分的數據來選擇適應的比例范圍和步長、尺寸。 ZedGraph 繼承了Framework中的UserControl接口,所以允許用戶在VS 的IDE 環境中 進行拖放操作。

 

 

如下圖,使用EFW框架畫一個餅圖,先從后台取出DataTable數據,再使用CakyGraphControl對象解析此數據,畫出餅圖綁定在界面上的Panel控件上;

 

 

       總之上面只是整理一些系統中常用的功能組件,后續持續加強框架中的組件,把更強大更好的組件加入進來;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM