您的位置:首页 > 其它

其实EXCEL也是一个很好的管理程序开发工具

2010-03-02 20:05 465 查看
Excel是公认的优秀的办公工具,我常用它来做Bug管理,计划跟踪,数据报表。这是最常用的用途,如果想用它来做数据分析和数据报表,公式要玩的很熟练。再进一步,Excel支持VBA宏,可以从更高级别上定制EXCEL,方便应用。EXCEL可以做管理程序的想法,源于最近对老外的EXCEL的分析。
国情不同,老外一般不会轻易发起软件项目。我不熟悉国外制作软件的流程,不敢贸然评论。但是我手头接触的这些EXCEL确实充当了管理软件的角色,它可输入数据,自动计算,批注审核。

1 EXCEL可以保存数据,行(数字标识)列(字母标识)相当于数据库的表的行和列。
2 EXCEL内置了大量的公式,供用户使用。还支持自定义公式,方便特定的行业应用开发。
关于如何用C#开发自定义的EXCEL公式,请参考这篇文章
如何给Excel添加用户自定义的公式

3 EXCEL是插件结构的程序,可以很方便的把功能集成到EXCEL中
比如常见的金山词霸,或是我写过的数据导入程序



这篇文章的地址在 /article/4686563.html

4 如何用EXCEL做界面
EXCEL可以做界面,EXCEL内置常用的工具箱,具备我们编程开发的常用控件。




用Toolbox做界面,配合VBA脚本控制算法,也可做出符合特定行业的应用。

再谈点实作方面的内容,如下图,这是一个计算机主机报价计算程序



打开这个EXCEL文件,根据需要选择不同的配置方案,按回车键,系统计算出主机的报价。
再来看看这个小应用是如何做出来的。
先在EXCEL中建立如下的表格映射关系



这是一个简化的例子,我没有考虑太多的因素。
如上的数据,硬盘以容量来区分价格,80G的价钱为160RMB,160G的价钱为220。
处理器,主板,内存的价格计算也是同样的道理。
假设如下的应用情景:用户打开这个EXCEL,只需要从列表中选择硬盘,CPU,主板,内存的
各个配置参数,系统就把价格计算好了。
比如上面的图片,选择160G硬盘,单核CPU,A2型号的主板,2G内存,EXCEL根据数据映射,计算出该配置的报价为1660。

如果用程序的实现方式,我们需要打开VS IDE,新建一个Page或Form,拖动几个DropDownList或ComboBox到界面上,
设置它的Items集合的值,然后是设计计算方法。
如果放映射值直接硬编码到程序中,可能的实现是这样
string cpu=ddlCPU.SelectedValue; // ”单核”;
int price=0;
if(cpu==”单核”)
price=600;
else if(cpu==”双核”)
price=1000;
这种实现方式可行,但经不起变化,稍微更改一下价格,整个程序需要重新编译和调试。
我们换一种方式,把价钱放到配置文件中,比如Harddisk.xml文件是存放硬盘的价格
<?xml version="1.0" encoding="utf-8" ?>
<Items>
<Item Name="80" Price="160"></Item>
<Item Name="160" Price="220"></Item>
<Item Name="250" Price="240"></Item>
<Item Name="320" Price="290"></Item>
</Items>
把这个文件读进一个Hashtable结构中,键是Name,值是Price。
每次计算就去读取这个xml文件,根据键来取值。
由于这个配置不会轻易改变,系统还考虑应该把它加入到系统缓存中,提高运行效率。
也许你还注意到上面图片中的”小于”字。有时候衡量一件物料的价格没有这么精确,
通常它只指定一个范围,超过指定的范围价格才会变化。比如化学药水,容积在1L(升)以内是100RMB,
1L至2L之间的价格是140RMB,遇到这种情况,Chemical.xml配置文件应该这样写
<?xml version="1.0" encoding="utf-8" ?>
<Items>
<Item MIN="0" MAX="1" PRICE="100"></Item>
<Item MIN="1" MAX="2" PRICE="140"></Item>
<Items>
现在我需要购买1.2升化学药水,上面的配置文件很清楚的说明了需要花费140RMB.
如何在程序中实个逻辑,我的做法是设计一个结构,
struct Item
{
float min;
float max;
int price

}
逐行扫描Chemical.xml文件,把它的每一个行数据,填充到一个Item结构,放到Hashtable中。
比如,现在需要计算1.2L的药水的价钱,遍历一下包含Item集合值的Hashtable,取出它的Item结构
如果1.2是大于等于Item的min,并且小于max的值,就取出price值,跳出循环。

至此,我已经解释如何把上面的EXCEL做的主机报价计算工具转换为我们熟悉的C#的做法。
考虑到软件费用(EXCEL,C#开发用VS IDE)和每小时人工费用,相比之下,EXCEL版本的计算工具,
比应用程序的成本要低很多。而两者达到的目的都是一样的,都可以实现这个功能。

再分析一下EXCEL版本的主机报价计算工具实现的三个细节。
大部分的操作都很简单,讲一下List的制作和公式的做法
菜单 Data—> Validation 弹出对话框,选择List, 指定Source即可,如下图




公式计算 常常会嵌套大量的IF语句,如下计算硬盘价钱的公式
=IF(B4=B9,C9,IF(B4=B10,C10,IF(B4=B11,C11,IF(B4=B12,C12))))
再把用到的常量和参数隐藏起来,不让用户修改,也可把worksheet加密,阻止用户修改。

最近分析的公司的EXCEL文件,大量的运用上面我说的技巧,界面设计的也很成熟。
我已经讲清楚了它的原理,结论就是EXCEL其实也是一个很好的管理程序开发工具。

文件下载 /Files/JamesLi2015/ExcelApplication.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐