xiong's profile共享空间标题PhotosBlogLists Tools Help
    December 31

    Excel ASP互联组件

     
     "一个就是我当年写的nb轰轰的ASP Excel互联组件. 牛到用ASP调用DCOM然后DCOM通过UI调用Office Automation操作Excel然后把数据送入Acess数据库然后给教授们说,看,这就是未来的办公自动化!你们保存在excel里面的学生成绩,以后就靠我这个程序放到网上和数据库里面鸟~~~"
    ---
    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硬盘空间
    安装方法:在服务器开辟http://station的域名(假如您在本机调试则应为http://localhost/(默认)),把*.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 网络开发技术
    以及http://www.vchelp.net 上面的相关资料
    ECNU.CS 熊力 xiong_li@263.net

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

     

    ---------------

     

    所以说,历史有着惊人的相似.

    当年的 IE->ASP(IIS)->DCOM->EXCEL

    就是现在的SharingPoint Server Excel WebService阿!

     

    当年是用最时髦的的Web Client, 加上最先进ASP, 加上最复杂的DCOM, 通过VBA来处理EXCEL中的数据, 多么巧夺天工阿

    换到今天,就是

    用最时髦的WPF, 加上最先进的Powershell, 加上最复杂的WCF, 通过WebService来处理AD中的数据, 看来老板真的是没有看错人啊...

    大家看看我第二副图中的那些textbox, 这证明了我对UI产品错落有致的美感, 大家看看我第三幅图中的那些名字, 这证明了我对安全产品本能般的信息把握阿~~~~

     

    Comments (8)

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    雁斐 徐wrote:
    我好像看到你的高等数学是25分。。。 :P
    Jan. 4
    xiong liwrote:
    某人的报送研究生还靠这个加分了的
    Dec. 31
    xiang zhouwrote:
    haha有意思的
    Dec. 31
    Xiaoshu Wangwrote:
    My God~ 老古董也翻出来了
    Dec. 31
    Jun Liwrote:
    :) 孔雀开屏了......
    Dec. 31
    Ting Wangwrote:
    自古红颜多薄命啊。。
    Dec. 31
    xiong liwrote:
    是啊是啊,天妒英才阿~~~
    Dec. 31
    敏 廖wrote:
    大家看最后一段,证明“我”是多么的自恋啊
    Dec. 31

    Trackbacks

    The trackback URL for this entry is:
    http://eparg.spaces.live.com/blog/cns!59BFC22C0E7E1A76!3901.trak
    Weblogs that reference this entry
    • None