1. 公司对报表工具的考虑
公司软件开发中,很多情况涉及报表的打印,有的报表简单,有的复杂,复杂的报表往往需要借助报表工具来实现,这样不仅可以提高开发效率,还能使报表保持很好的统一和美观。但是,公司对报表工具的选择保持的态度:
l 报表工具最好是开源软件
l 方便部署
l 方便现场人员快速的修改报表设计
这样的选择,出于免费、不侵权、方便的原则。
2. 目前公司选择的报表工具及现状
依据以上的原则,公司目前使用的是Jasper iReport工具,这是一款java语言开发的开源的报表工具,支持JDBC数据源连接等,详细见(http://community.jaspersoft.com/project/ireport-designer)。
公司内部开发WPF程序,c#不能直接调用设计好的iReport模板,还需要java环境搭建报表服务器,由c#程序调用报表服务器,传递参数得到返回pdf,这样就能呈现在WPF界面了。这样方案的实现基本上不会有很大的等待,可以满足用户的需求。
现实的情况却更复杂:目前公司走离线解决方案,采用SqlCE数据库作为离线数据库,数据会按照既定的同步规则进行上传和下载。很巧的是iReport不支持连接SqlCE,因此要想得到报表数据,要么通过同步后服务器的数据库,要么通过iReport采用其他的数据源的方式(比如采用xml作为数据源)。采用同步后服务器的数据的方案时,性能受限于同步方案的效率;采用xml数据源时,又要调整报表服务程序。
3. 报表的几种解决方案
目前,可以尝试以下几种方案:
l WPF直接绘制
直接绘制报表,简单的报表还好。但是复杂的报表,或者分页、换行、特殊值直接换行、续打等问题都会很难解决。同时,如果现场客户需要你调整一下报表的格式结构,也只能修改代码了。
l iReport报表工具
iReport是java语言的开源软件,如果开发环境是基于java的,这个软件肯定是首选。但是,如果开发环境是.NET下的,使用该工具的话,可能就不会很方便。
l FastReport报表工具
FastReport工具可以用在.NET和Dephi环境下,据说在Dephi环境下应用的很成熟。但是该工具不是免费的,公司不想花钱还不想惹官司的话,很多人不喜欢用;但是,Demo版本,使用起来已然很方便。可以给设计好的模板,传递参数,也可以给它赋值数据源用于绑定。
补充:网上有FastReport.Net和FRNetDemo2010提供下载,但是项目中的引用最好是FastReport.Net中的dll文件,不然会提示错误信息“Could not load file or assembly‘FastReport,Version=2013.2.5.0,Cultrue=neutral,PublicKeyToken=null’ or one ofits dependencies.系统找不到指定的文件”。