二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件
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的特性(单元格样式、数据格式、公式等等)
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控件上;
总之上面只是整理一些系统中常用的功能组件,后续持续加强框架中的组件,把更强大更好的组件加入进来;
二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件的更多相关文章
- Unity3D学习笔记(二十六):MVC框架下的背包系统(1)
MVC背包 需求: 1.背包格子的装备是可以拖动的 2.装备栏的装备也是可以拖动的 3.当背包格子的装备拖动到装备栏时,如果是装备类型和装备栏类型是一致的能装上 4.背包的装备是按照顺序放在格子中的, ...
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 二十四、【开源】EFW框架Winform前端开发之项目结构说明和调试方法
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 二十二、【轻量级开源框架】EFW框架Web前端开发之JqueryEasyUI
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 二十、【.Net开源】EFW框架核心类库之WebService服务
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...
- 二十七(序幕)、【开源】EFW框架破茧成蝶
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 二十三、【开源】EFW框架Web前端开发之常用组件(FusionCharts图表、ReportAll报表等)
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 十九、【.Net开源】EFW框架核心类库之WCF控制器
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...
- 【开源】EFW框架系列文章索引
开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...
随机推荐
- C++ 关联容器
<C++ Primer 4th>读书笔记 关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. 关联容器(Ass ...
- C/C++文件操作1
在C语言中,文件操作都是由库函数来完成的. 在本章内将介绍主要的文件操作函数. 文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式 ...
- iOS YSMine 通用设置
概述 我们在开发的过程中,经常需要重复的写个人中心设置的代码,很多情况下,我们都是通过if(indexPath.row)来判断操作以及要跳转的页面,这样的情况是非常不友好的,尤其是当我们需要调整显示顺 ...
- android定位GPS定位 代码实现
package com.lx.util; import android.content.Context; import android.content.SharedPreferences; imp ...
- C# winform的WebBrowser非常规编程(强烈推荐)
本文章被今日头条推荐 1.在WebBrowser中实现抓取301和302协议 在WebBrowser中抓取301和302协议目前官方提供的组件远远不够,需要借助HttpMonitor.dll.这个组件 ...
- css解决谷歌,360浏览器默认最小字体为12px问题
当我们设置前台html页面样式问题字体小于12px;时,会发现不管怎么设置小于12px字体,在谷歌.360浏览器上都不生效. 但在火狐等浏览器上却可以正常设置,当你打开谷歌360的设置后会发现,它们设 ...
- 【CUDA学习】全局存储器
全局存储器,即普通的显存,整个网格中的任意线程都能读写全局存储器的任意位置. 存取延时为400-600 clock cycles 非常容易成为性能瓶颈. 访问显存时,读取和存储必须对齐,宽度为4By ...
- 友好解决POI导入Excel文件行是不是为空
继 解决POI读取Excel如何判断行是不是为空 后发现了一个问题.这个是一个银行的需求,有20万个客户的资料要导入系统,但有的资料是有问题的(不能正常导入),但也有能正常导入的.现在的问题是怎么知道 ...
- SMON功能(一):清理临时段
温故而知新 SMON功能(一) SMON(system monitor process)系统监控后台进程,有时候也被叫做system cleanup process,这么叫的原因是它负责完成很多清理( ...
- C#中将结构类型数据存储到二进制文件中方法
以往在vb6,vc6中都有现成的方法将结构类型数据写入和读取到二进制文件中,但是在c#中却没有现成的方法来实现,因此我查阅了一些资料,借鉴了网上一些同学的做法,自己写了个类似的例子来读写结构类型数据到 ...