Chinaunix首页 | 论坛 | 博客
  • 博客访问: 378762
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:37:15

Excel ASP互联组件
作者:



组件产生背景:
Excel无疑是最广泛的电子表格软件,它的计算,表格,图表,统计功能十分方便.随着互联网的发展,数据和资源的共享程度提高,使得分布数据库的使用越来越广泛.但是,专业分布数据库开销大,成本高,需要的专业知识很高,而且网络传输和管理复杂.所以,如果能够用普通的http通过internet/internat来实现客户-服务器的数据操作,检索,就可以广泛引用到数据量不大,安全要求不严格的场合.IIS提供的asp无疑是服务器一个理想的数据平台,而在客户区,如果可以用excel来处理数据库的数据,则是很多人容易轻松掌握的.

Excel 作为Microsoft Office里面的拳头产品,内建了COM支持,所以通过Automation,可以轻松实现Automation组件跟excel里面的VBA的通信.本程序就是根据这个原理完成.

组件处理流程:


说明:
1, 2都是处在使用IIS的服务器上。1是数据源,2是使用ASP的脚本,主要是处理传递过来的SQL语句,同时负责向组件传递检索和操作结果。2跟组建的传递都是通过简单http协议
3,4位于本地电脑。1是Excel主程序,用来操作返回结果,比如排序,统计,跟一般使用没有区别。它通过几个按钮调用宏。2就是被调用的宏程序,用VBA编写。主要负责把用户的要求传递给组件,并且把组建返回的结果恢复到Excel界面上。4跟组件的传输通过COM 的特例:Automation。通过直接调用组件内建的属性和方法,组件直接返回结果。
5是核心组件。负责两边的调度。具体是生成必要界面接收用户输入,并且生成SQL表达式,同时根据需要调用数据源来检查用户权限。然后把SQL传递给ASP脚本,ASP然后返回结果(http),组件程序然后按照自己的数据结构处理返回结果,然后传递回给VBA。

组件的安装:

运行环境:
服务器:IIS4.0以上
客户端:Excel 97以上,1m硬盘空间
安装方法:在服务器开辟的域名(假如您在本机调试则应为(默认)),把*.asp和数据库文件拷贝到虚拟根目录.
在客户端拷贝School.exe和MFC动态链接库(未包含),运行School.exe一次注册组件.然后调用Excel打开工作表,直接操作.


组件程序功能:

该组件程序以学校学生成绩管理系统为例子,实现本地Excel和服务器数据库的数据交换.

通过该组件,可以在Excel中实现对网络上数据库的检索,根据不同条件返回不同数据。同时可以实现对服务器数据的更新和插入,以及不同的权限访问。具体说明如下:



查询:

打开工作表格,在顶端出现五个按钮,分别是:load,unload,select,插入新数据,updata.

如果要实现查询功能,select,出现上图表示的窗口.每一项有四个输入框,第一个保留,第二个和第三个表示该字段的最小和最大值,最后一个表示是否要该字段的返回值.其中所有的字段都是按照与运算操作,点击ok后,工作表返回查询结果.如果在查询窗口中不填入任何数据,就是返回所有数据的所有单元.



如图,从a5单元开始,顶端填写字段名字,下面填写数据,然后选中要插入的数据,点击”插入新数据”.然后输入正确的用户名和密码,选择的数据就会被插入数据库中.用户名和密码在数据库中保存.



更新数据:

如图,从a5单元格开始,填入两个字段名和对应数值,点击update,输入用户名和密码.左边的列指定操作对象,当数据库中的数据条件和左边的配对时,才把数据更新成右边的数值.

组件程序功能分析:

优点:

1 本组件可以方便连接Excel和网络服务器的数据库,同时,数据库的操作用ASP调用SQL完成,这样可以极度减小客户端程序的工作,跟使用传统ODBC相比,维护和安装更容易,同时,系统需求也更小.由于数据库的调用全部都在服务器,组件只负责传递SQL语句,整个系统的更改,只需要集中在服务器就是了.

2 使用Excel来作为的数据库操作操作平台,更容易让普通使用者接受,而不需要用户有专门的数据库知识,整个使用就跟用Excel在本地计算机打开文件一样.同时,对数据的分析,比如排序和统计,就可以直接使用Excel的功能,还可以借用Excel的图表,格式转换等等功能.

3 由于组件用COM技术编写,所以它不仅可以用在Excel上,它可以和任何使用接口技术的程序通信.同时,新功能的添加,只需要在组件上加入新的属性和方法.所以该组件特别灵活.

  如此看来,该组件可以方便地实现任意程序跟服务器数据库的连接,在不需要使用专业分布数据库的情况下,比如班主任在全校学生数据库上检索特定学生,并且在Excel上方便操作;销售人员在异地动态更新公司数据库等等领域都可以方便地使用.

缺点:

本组件程序主旨是为了演示Automation的应用,包含的具体实例(学生成绩系统)并不完善.具体表现在:数据库设计不能完全体现学校学生成绩管理机制,excel中vba代码过于冗长,组件服务依赖于windows导致的健壮性不好,没有提供对网络连接的检查,不提供明显类型检验和出错原因返回,同时在数据量特别大的时候很容易导致效率极度下降,数据的更新和插入必须按照特定格式进行等等.

导致以上结果的原因是:
1 主体是体现Automation的功能,不是具体实现一个软件
2 对学校成绩管理机制缺乏必要了解.
3 Excel本身是表格软件,在处理上千个数据的时候力不从心,格式复杂.
4 本人刚刚进入大二,对新的技术处于探索阶段,数据结构和数据库的专业课还没有完成,同时找不到对Atuomation和COM有深入了解的同学合作完成,导致程序效率低下漏洞多
5 对VBA和Excel中的对象和方法缺乏详细了解.
6 由于COM技术还在发展中,它的细节资料不多,由于内部API隐藏太多,所以真正的COM程序最好是使用c#编写.

但是本程序完成地提供了通过Atuomation对数据库的远程访问和与Excel的完美连接,只需要对其中的模块进行补充完善,一个方便的远程数据库就可以完成.

本程序测试环境
Windows 2000 Professional sp2+IIS5+Office Office Xp+Pentiun4+256MRDRAM
Windows 2000 Professional +IIS5+Office 2000+Pentium3+256MSDRAM

参考资料:
Inside VC++ 5th Edition
Quick Basic 教程
Excel5 使用指南
ASP 网络开发技术
以及 上面的相关资料
ECNU.CS 熊力 xiong_li@263.net

本程序本来准备参加学校科技作品比赛,顺便投到这里,希望得到大家的指教!


--------------------next---------------------

要学COM技术,建议你一定要看下Dale Rogerson写的<> ( dsxvckbase 发表于 2002-5-20 21:09:00)
 
COM后面是什么呢???
Wev Service?? ( player 发表于 2002-4-8 14:59:00)
 
"由于COM技术还在发展中,它的细节资料不多,由于内部API隐藏太多,所以真正的COM程序最好是使用c#编写",这种观点可能不太正确吧!
COM技术是已经发展到了一个顶峰了,win2000就是由上万个COM堆砌起来的,C#已经明确表示了要抛弃(当然不会是一天之内了)现有的COM。所以现在咱们使用和学习的COM是一个已经“过时”的技术了,只是他可能在2、3年内继续存在而已。
( Leon 发表于 2002-4-8 10:28:00)
 
好像服务器地址是htp://station
不是笔误! ( grapef 发表于 2002-4-7 22:37:00)
 
you did a good job! ( hehe 发表于 2002-4-7 19:55:00)
 
.......................................................

--------------------next---------------------

阅读(187) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~