[IT168 技术文档]摘要: 本文主要针对企业应用中, 共享环境下开发Office管理软件中,多用户使用软件对于Excel文档进行控制中所遇到的问题,提供一些实际可行的解决方案。
企业级的应用中,我们经常会针对Office 文档的管理开发一些自应用的Application. 透过这些应用程序来对企业环境中的Office文档进行查看,编辑以及管理。在开发的过程中,多用户对于文档的同时操作就成为一个必须要考虑的要点。
本文主要透过一个实际客户在开发中所遇到的多用户编辑控制文档的案例进行分析,提供几种在共享环境下控制Office文档并发操作的解决方案。
1. Office的工作机制及程序表征
当我们将任何Office 文档 (Excel, Word, etc.) 放置在一个共享的网络环境中的时候,是基于网络文件系统的。因此,当一个用户去访问该共享环境并打开了该文档以后,另一个用户尝试去同时打开该文件的时候,他会收到一个弹出对话框,提示说当前是”read-only”状态,是否要打开副本。一旦这个副本被打开,如果该用户选择保存的话,系统会弹出一个对话框,所有的更改都将保存在一个新的叫做”Copy of xxx”的文档中。
实际应用中(这里笔者使用VB6), 代码实现过程中,对于共享文件的处理,同样应用了上述的机理:当我们应用代码来打开文档的时候,多用户的情况下,Runtime machine会调用代码来call Excel 文档,并且尝试对该文档进行修改时,当系统一旦发现该文档已经被另外一个用户所打开,VB系统就会处理这一冲突,并弹出一个”Switch To” 的系统错误消息 (如图1所示) 让操作者知道该文件实际上已经有了写冲突。同时,这个时候,VB程序会失去响应 (not responding)。

图1-1
2. Excel Share Workbook机制
基于上述的信息,当我们需要检测是否是多用户同时操作的时候,可以使用Excel的"Share Workbook"功能。该功能可以让一个Excel文档设置为允许多个用户在网络环境中同时访问,并修改的模式。每一个用户可以将各自的修改保存在该文档中,同时也可以根据文档中数据颜色的不同来查看不同的用户对其所作的修改。如果两个用户同时对一个单元格进行修改,这时系统会弹出对话框进行冲突处理,用户可以根据提示选择保存。如图2所示:
图2-1