报表完美解决方案
——Excel Quicker组件
控件名称:
Excel Quicker
作者:
Eunge
邮箱:
网站:
开发背景:
a) 背景一:用户群广泛
MS Office Excel自诞生以来,被世界各地的人使用和认可,几乎成为了Office中除了Window安装最多的应用软件。Excel的功能是非常强大的,即使在报表领域面对Crystal Report、Analysis Service等专业级别定位的报表系统也毫不逊色。
在企业应用中,使用盗版系统是非法的。然而动则十万人民币的5×License水晶报、或者百万级的无限License水晶报表,并且还需要专业的报表开发人员,这与软件成本控制显然背道而驰。而MS Office,我想是世界上市场占有率最高的办公系统了,在企业应用中,我们更加离不开Office的身影,我们能否挖掘Office的潜力,在报表这一环节上控件成本呢?
其实我们完全可以想到Excel,Excel解决方案是我们常见的最低廉的、最具有性价比的报表解决方案。
b) 背景二:强大的功能
在企业应用领域,打印单是必不可少的,但很多时候打印单完全可以无纸化,是否真正的打印出来完全由用户来决定,而Excel本身可以作为文件在网络间、企业域、Internet上传输、传阅,同时它也可以方便地打印出来,甚至也可以在安装了Office Excel系统客户端的浏览器上直接打开。在限制成本的前提下,为开发群/用户都提供了更好的选择。
并且,相对于其他在线报表解决方案,如果用户需要多次浏览/查询报表,可能需要多次的服务器处理、网络传输工作,无疑降低了效率。
c) 背景三:新的功能、新的特点
报表做什么?做统计、做分析、做决策!面对新的竞争压力,就需要更强劲的分析能力,知道OLAP吗?如果把Microsoft Analysis Service理解为Online Analytical Processing,那么我把Excel的分析服务理解为Off-Line Analytical Processing。我想很多使用Excel的初学者都不了解Excel的OLAP数据透视图功能,并且Excel中还可以图文并茂(图:各类Chart图;文:透视表)
d) 背景四:开发风险
我们了解Excel的强大,但当我们把目标付诸实践的时候,却发现有风险、有难题。微软为我们献上了完美的应用程序,却没有为我们提供完美的开发接口,Excel VBA接口不友好,开发资料也是相对较少,甚至在.NET平台开发中会发生进程死亡(使用后的Excel进程无法正常的退出,从而导致越来越多的Excel进程驻留,造成系统崩溃)。
e) 背景五:环境,实际境况
我们团队迎来了一个新的项目,24张需求复杂的报表,报表的难度和时间紧迫性前所未有,面对紧张的开发进度,当时我们毫不犹豫的选择了我开发的ExcelQuicker第一版v0.8BETA。
项目最终的成就证明我们的选择是对的,也证明了v0.9BETA(在项目的开发中,组件也随之升级到V0.9BETA)是有价值的,那个项目在User && PM && R.D一致认为难度大、时间紧的情况下,进度提前半个月结束,项目无论从质量、效率上都得到了用户的首肯。
里 程 碑:
项目成功以后,我开始思索如何让我们的成功、我的成功与其他人、其他项目分享,我完全重写了Excel Quicker,并且在Internet上发布第一版V1.0,随着Internet上更多的朋友开始使用本组件、随着我们Team更多的项目组开始使用Excel Quicker、也随着无数个深夜,本组件经历了一次又一次的迭代,算法、功能越来越Powerful,版本经历了V1.1、V1.2、V1.3、V1.4、V1.4A、V1.5,到了最终的V2.0版本。
V2.0版本是完成重写的,我昧心的装上了Borland的Together For .NET 2.0,绘制与C#完美结合的UML。V2.0版本可以大大的简化我们的开发,并且在性能和稳定上做了进一步的优化。
控件有效性:
a)性能面
伴随着算法的升级,在大数据量报表生成时,各个版本的用时如下图(对于20000行×10列=20万单元格的报表,在P4 2.6G + 512M配置)
版本 | 耗时 | 描述 |
V0.8 | 20分钟无结果… |
|
V0.9 | 9分30秒 |
|
V1.1 | 5分30秒 |
|
V1.3 | 4分 |
|
V1.5 | 3分20秒 |
|
V2.0 | 预计1分26秒 | 性能的提升可见一斑 |
*我想我们使用本组件来生成Excel报表,速度、性能方面的疑虑今后我们将可以不必再考虑。
b)功能面
在制作Excel报表中,需要考虑两种方案:
Css+Html = VBA + Excel
某些报表的布局是相当恼人的,如果可以提供给我一个像开发Windows桌面应用程序那样的编辑器会多好,简单的可视化操作,会让我们在最短的时间类完成高效的设计任务。
然而,或许我们没有发现,Excel本身就是这样的编辑器。我们可以先制作Excel模板文件,然后把剩下的工作交给ExcelQuicker,ExcelQuicker甚至支持在上下两片模板之间插入大批量的数据,以此来简化开发工作。
甚至,更强劲的办法是,我们可以像CSS对于Web页面那样,让Excel文档中的VBA脚本对于Excel文档,在没有源代码的情况下,让我们照样可以更改Excel的样式、布局和功能。因为,ExcelQuicker会自动调用Excel模板文档上的“CSS样式”——VBA脚本!而Excel文档的VBA制作极其简单,因为Excel本身提供了“宏”录制!
栩栩如生
在ExcelQuicker上开发图文并茂的报表易如反掌,Excel提供了EQPivotTable来支持OLAP透视表,你仅仅需要在EQPivotTable对象上构造一个EQChart,并简单的设定两三个属性,就可以生成具有图文并茂的分析报表
效益评估:
a)系统
我们将分别对使用Excel和Crystal Report两套报表方案进行分析
Solution | Price |
|
Office2003 | $409.99 (3200RMB) |
|
Office2000 | $289.99 (2400RMB) |
|
Crystal Report(5*License) | $11200 (约10万RMB) | 5*License Crystal有使用限制,服务器最多只能链接5个终端 |
Crystal Report | $100000 (约100万RMB) |
由此可见,ExcelQuicker可在最廉价的Office2000上运作,你只需要在服务器上安装Office2000并化肥$290美金,即可带来不一样的效果。
a)开发效率
首先Crystal系统不是人人都熟练掌握,正因为它贵,所以它的确大,因此掌握它的人也毕竟没有掌握C#/VB.NET的人多,例如我们这里之前的一个采用Crystal Report(5*License)方案的系统,同样5个人力,
Solution | Amount | Spending |
Crystal | 18 | 128人/日 |
ExcelQuicker | 24 | 58人/日 |
对比的这两个方案,都是我们开发人员从陌生到开发出产品所花销的时间,可以看到,要上手Crystal并开发出产品,相对于熟悉ExcelQuicker的效率还是差了很多。
当然,Crystal功能要强大得多,我们这里所指的都是能在满足用户需求的前提下,使用Excel报表方案是非常值得我们考虑的。
简介:
ExcelQuicker V2.0
(1)Main In Abstract Factory Design Pattern;
(2)支持OLAP透视图表,相应的编程相当简便;
(3)委托,每一个对象都有Before/After的委托,用于当有ExcelQuicker没有涉及的封装时,供开发者直接调用VBA接口实现;
(4).Remoting技术,在B/S架构系统中,我们使用Excel技术往往的方式如下:
在这架构中,我们需要配置DCOM环境,通过DCOM调用以执行操作。
而我在V2.0版本中完全支持.Remoting技术,跨应用程序作用域,让IIS进程中只是调用远程对象的方法,实际却让桌面应用程序来完成Excel报表的生成,实现全程掌控。如下图:
这样就完美的解决了Excel内存问题,并且对Excel报表的生成全过程全程掌控。(这是正在开发的ExcelQuickerHelper,一个Winform应用程序,响应ExcelQuicker的远程请求。)
……
不仅仅这些,V2.0版本还提供了更多更美妙的功能。
如果你想知道更多,如果你想使用,请到www.eudev.net下载ExcelQuicker2.0组件,本组件免费使用。