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

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

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

这篇文章的地址在 http://www.cnblogs.com/JamesLi2015/archive/2010/02/25/1673124.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

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

  1. 一个很好的性能监测工具dstat

    无意中发现一个很好的性能监测工具dstat,实在是太强大了,可以完成vmstat,iostat,netstat等等工具才能完成的任务,而且是彩色显示的,各种情况一目了然,更美妙的它可通过参数来指定显示 ...

  2. yt88加密狗不识别_YT88 是天域一个很不错的加密狗工具,可以源码 ,还 外壳 ,带DLK开发包。 Windows Develop 256万源代码下载- www.pudn.com...

    文件名称: YT88下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Windows_Unix 文件大小: 12909 KB 上传时间: 2016-05-01 下载次数: 0 提 供 ...

  3. Cursor:一个集成GPT-4的IDE开发工具

    Cursor:一个集成 GPT-4 的 IDE 开发工具 2023.3.19 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. 一.简介 官网:https://www.cursor.s ...

  4. 推荐10个很棒的 CSS3 开发工具

    CSS3 是对 CSS 规范的一个很大的改善和增强,它使得 Web 开发人员可以很容易的在网站中加入时尚的效果.尽管如此,有几个工具可以在你使用 CSS3 制作网站的时候起到很好的帮助作用.在这篇文章 ...

  5. 推荐15款很棒的 JavaScript 开发工具

    在开发中,借助得力的工具可以事半功倍.今天这篇文章与大家分享最近发现的一些有用的 JavaScript 和 jQuery 的开发工具,库和插件.希望这些工具在你你即将到来的项目中能用得上. 01.Te ...

  6. 15款很棒的 JavaScript 开发工具

    在开发中,借助得力的工具可以事半功倍.今天,这篇文章向大家分享最新收集的15款非常有用的 JavaScript 开发工具. TestSwarm: Continious & Distribute ...

  7. 又一个跨平台的快速app开发工具:AppArchitect

    今日,某同学在试用AppArchitect开发app. 看了下官网FAQ,感觉像是phonegap build类似的东西. 1 提供在线开发工具 2 app运行时候,要下载AppGyver Scann ...

  8. 一个很实用的钢笔绘制工具PenTool

    demo 体验一下 最近在github上闲逛的时候发现了一个不错的小插件 penTool. 这个工具支持用鼠标在canvas上绘制路径.既然是工具,当然得比canvas原生的功能要强大突出的地方,我主 ...

  9. 推荐一个很不错的桌面便笺工具magic notes

    (gently按:推荐这个软件纯粹是我觉得好用,我和这作者不沾亲不带故,哈哈!~) 我原来是用google桌面的待办任务来管理事项,后来我系统重装,而且装了GOOGLE DESKTOP会明显拖慢系统, ...

  10. 一个很NB的数学绘图工具-geogebra

    官网: http://www.geogebra.org/cms/zh_TW/ http://baike.baidu.com/view/3086671.htm GeoGebra是自由且跨平台的动态数学软 ...

最新文章

  1. hellocharts-android开源图表库(效果非常好)
  2. Qt 中事件与处理
  3. react学习(44)----只更新它需要更新的部分
  4. 35岁中年博士失业,决定给找高校教职的后辈一些建议
  5. ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决
  6. Flutter实战一Flutter聊天应用(十六)
  7. html转化pdf文字无法显示,HTML 转 PDF 排雷 之 wkhtmltopdf 转换得到的PDF没有内容
  8. 响应式网页设计之JavaScript基础
  9. linux带source地址ping,实战经验:Linux Source NAT在Ping场景下的应用
  10. APMserv常见问题
  11. query_data函数C语言代码,pandas 查询函数query的用法说明
  12. Freertos中两个delay函数
  13. ArrayList中元素的删除操作
  14. 系统架构设计笔记(13)—— 数据挖掘
  15. 求生之路2服务器无限刷特感,求生之路2全部联机方法一览_求生之路2怎么联机_牛游戏网...
  16. 黑龙江省高职计算机考试试题,黑龙江省计算机等级考试试题.pdf
  17. aspx repeater 用法_详解ASP.NET数据绑定操作中Repeater控件的用法
  18. memory compression如何关闭
  19. HTML——表单及表单元素
  20. kali翻译插件_Kali优化之安装翻译工具goldendict及使用方法

热门文章

  1. 国内某厂商摄像头敏感信息泄露漏洞事件分析
  2. 抓网页_面包网_javaSE
  3. html图片绝对地址相对地址,HTML中background的图片地址是相对地址吗?
  4. 中国大学mooc慕课题库答案怎么查,这里全有了
  5. R485集线器定协议有多少种能否抗干扰?
  6. TFP-161/100/6MM/6MM/MPU在红尘里,靠近菩提
  7. php实现电脑自动关机,如何设置定时关电脑?三种方法教你设置电脑自动关机
  8. linux基本操作大全centos7
  9. tftpd32 工具中的 dhcp tftp 使用说明
  10. Dao和Repository,你还傻傻分不清吗?