二十6、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

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

EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA
编程

EFW框架实例源代码下载:http://pan.baidu.com/s/1o6MAKCaruby

 

      前言:本章介绍除DotNetBar2控件套件以外的另一些经常使用控件,包括Grid++Report报表、条形码、Excel导出、图表控件ZedGraph;相似这些控件网上免费开源的太少了,通过一番对比和使用感觉最后决定把这几个控件整合到EFW框架中供你们选择使用;服务器

本文要点:架构

1.Grid++Report报表框架

2.Winform程序接收条形码工具

3.Excel导出NPOI性能

4.图表控件ZedGraph开发工具

 

1.Grid++Report报表

参考资料:http://www.rubylong.cn/index.htmspa

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遇到的问题:

一、若是是.NET,须要在服务器端装Office,且及时更新它,以防漏洞,还须要设定权限容许.NET访问COM+,若是在导出过程当中出问题可能致使服务器宕机。

二、Excel会把只包含数字的列进行类型转换,原本是文本型的,Excel会将其转成数值型的,好比编号000123会变成123。

三、导出时,若是字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。

四、Excel会根据Excel文件前8行分析数据类型,若是正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成相似1.42702E+17格式,日期列变成包含日期和数字的。

(二)使用NPOI的优点

一、您能够彻底无偿使用该框架

二、包含了大部分EXCEL的特性(单元格样式、数据格式、公式等等)

三、支持处理的文件格式包括xlsxlsxdocx.

四、采用面向接口的设计架构( 能够查看 NPOI.SS 的命名空间)

五、同时支持文件的导入和导出

六、基于.net 2.0 也支持xlsx 和 docx格式(固然也支持.net 4.0)

七、大量的实例代码

八、你不须要在服务器上安装微软的Office,能够避免版权问题。

九、使用起来比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控件上;

 

 

       总之上面只是整理一些系统中经常使用的功能组件,后续持续增强框架中的组件,把更强大更好的组件加入进来;

相关文章
相关标签/搜索