找回密码
 立即注册

QQ登录

只需一步,快速开始

admin 讲师达人认证 悬赏达人认证 活字格认证 SpreadJS 开发认证
管理员   /  发表于:2018-10-24 15:49  /   查看:3122  /  回复:0

作者:石家庄品智科技有限公司,刘永政

入职之前,我朋友也是我的上司让我主要负责产品中报表功能的开发,并且用指定的报表开发工具开发——ActiveReports。由于是Web开发,于是我带着各种疑问(比如:他们JAVA WEB项目为什么要用.NET平台的报表控件?各种前端框架为何不能满足公司的需求?)开始了我的ActiveReports体验之旅。

入职以后肯定是看文档啦,一两天(ActiveReports还是非常容易上手的)尽快了解了一下ActiveReports 这款控件:完善的文档,可视化的开发工具,用起来非常方便,容易上手,最重要的是有各种报表案例;导出查询结果到EXCEL、PDF等格式无压力(正好是我们业务需求);排序仅需要一个报表文件上的一个配置;不仅内置各种VB表达式(Sum,Abs,Switch,ToDecimal等等非常多)当然,如果这些表达式还是无法满足你的需求,最爽的是你可以自定义VB表达式!

由此可见ActiveReports 不仅减少大量的代码,提升工作效率,最重要的是降低了维护成本,提高了产品的可维护性

实际工作当中,我不得不承认ActiveReports 确实提升了我们的工作效率。我们的业务报表比较复杂,但是对于动态行加动态列结构的报表,ActiveReports 帮我毫无压力的实现了它,你只需要一条简单的sql不用GROUP BY语句,只需要设置报表的分组属性即可。虽然ActiveReports 自带取钻功能,但是由于我们业务的复杂性(一张表多次取钻),我还是重构了一套自己的取钻逻辑:比如一张业务汇总的矩表
3-1.png

只需要一条简单的select name,count,amount from TABLE设置矩表的行分组为 name即可。或许这对你来说太简单了,我可以用EasyUI,sql中加上GROUP BY不就行了?那好,我的要求是点击货品名称查看某个货品的库存记录
3-2.png

常理操作你得再写一个查询,并返回结果。当然对ActiveReports 来说这简单多了,你只需要将上一个查询的结果写入到缓存中,当点击货品名称的时候你只需要DataTable.Select(条件);从缓存中获取相应的数据返回即可。

当然这仅仅是一个简单的示例,我只是想说明ActiveReports 是一款非常灵活的工具,你可以返回一些非显示性的字段,控制表格的其它属性,比如:
某一行,某一列或者某一个单元格的背景色、字体颜色、字体大小

某一行,某一列或者某一个单元格的内容按照什么规则显示比如下图
3-3.png

再比如巧用ActiveReports 控件的层列表实现查询的时候只显示表头和表格,导出以后的Excel中再表头中加入当前的查询条件,毕竟对于导出的内容要让客户知道客户是通过什么条件筛选的也是非常人性化的设计。非常多的实际应用场景也没必要一一举例,ActiveReports 官方有太多能让你满意的报表案例,当然他们也提供源模板。
我只是想说,用ActiveReports 时间越长你会越离不开他,关于报表只有你想不到的,没有ActiveReports做不到的。如果有人问我关于报表的解决方案,我一定推荐他用ActiveReports
附:ActiveReports 官方QQ交流群109783140,已经在用ActiveReports 或者将要用ActiveReports 或者你正在为你的报表业务挠头的朋友可以随时加入,互相交流学习。本人群昵称:专治疑难杂症


0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部