Web系统报表实现总结

来源:互联网 发布:淘宝客服工作总结 编辑:程序博客网 时间:2024/04/29 13:48

最近由于项目需要,要在web系统中做报表输出及打印,我是基于.net平台实现的,目前了解的方法有

1.水晶报表

2.微软的报表

3.用office 的Excel

水晶报表原来在项目中用过,功能很强大,设计能力很强大,网上资料很多,就是可编程性不方便,部属也不方便。

微软在vs2005后提供了个报表工具,网上叫做RDLC报表,最近研究了一段时间,发现功能可不错,在web上展示也很方便,支持导出功能。采用本地报表方式不需要专门的MS Reporting Services。遇到的最麻烦问题是画线不方便,大家也都知道中国人的报表最怪异。RDLC报表有个画线的控件,可是画出来在web上看不到,可能我不太会用,后来使用文本框的边框来实现画线的功能,可是太不方便,文本框对齐也成问题,设计期不方便操作。

  用MS的Office的EXCEL网上有很多例子,就是用Excel Library的COM来实现,在C/S中用的很不错,可以实现任何复杂的报表,程序控制也方便。可在web上最大的问题是效率问题和Excel进程不能释放。网上有很多方法我试了都不行,在开发环境可以,发布到IIS上就不行,还有权限的问题,要采用模账户来饶过权限的问题和配置Excel的COM服务。后来我想到使用一个控制台程序来操作Excel,然后在web上调用这个控制台程序,因为以前做过用winrar来实现文件的解压,所以采用这个思路来实现。控制台程序操作Excel自然没有问题。可是在web上调用还是有问题,一是实例excel很慢,还有是要配置好Microsoft Excel 应用程序.最后由于效率问题所以没有采用。

 后来在网上找了个开源的Myxls库,是直接按Excel公开的标准文件格式来直接写文件,可是只能写Exel不能读,对一些简单的报表很实用,不需要服务器上安装Excel就可以实现,对格式的控制不是很强,所以我把它定义用来做简单的通用报表,可以用来做Excel输出,然后由用户再次操作,不太适合做复杂的报表。

 最后我采用的是使用JS来控制Excel,要求客房端安装Excel这个不过份吧,还有就是要设置IE,否则会出现“Automation服务器不能创建对象”,只要在IE中设置“对没有标记为安全的activex控件进行初始化和脚本运行”设置成“启用”即可。实现类似 var oXL = new ActiveXObject("Excel.Application"); ,用JS来控制很方便,速度也很快,感觉和C/S控制Excel差不多。对一些操作与VBA差不多,也可以使用Excel的宏录制功能,看看宏代码,改改就可以用到JS中。网上有很多JavaScript控制Excel的资料,有兴趣的可以找找。我已经用这个完成了我们项目中的复杂报表。实现的方式为先用Excel制做个模板,然后动态填写数据,采用Excel方便打印、方便用户做格式的调整和对数据的调整(用户不想报真实的数据)。采用jQuery框架调用服务器端服务返回JSON格式的数据,在窗户端打开Excel模板,动态写数据。这样很好的解决的我手头的问题。不知道是不是最好的,但我感觉到还可以,效率很高,控制起来也方便,要调整输出格式,只要调整Excel模板,不需要编译。Excel进程释放还是有点问题,只有在IE关了才可以结束Excel进程。可能是因为Excel是从IE启动的,所以要等待IE关了,才可以结束Excel进程。

  JS+Excel的方式生成web系统的报表可能会成为我未来web系统的做报表的主要实现方法。