🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **实现多人同时编辑一份文档** ### **1. 功能介绍** 使用程序控制不同用户打开文件后,只能编辑Word文档中属于自己的区域。用此方法开发的话,支持多个人同时打开一个文件编辑各自的区域而互不影响的。 ### **2. 如何实现多人同时编辑一份文档** 在Word文档(比如说:123.doc)中预先设置好多个数据区域(“PO_”开头的书签),当以表单模式(WebOpen方法的第二个参数使用docSubmitForm)打开Word文件时,只有设置了Editing属性等于true的数据区域可以编辑,其他的位置都是只读的。当多人同时在线打开同一个文件的时候,可以根据登录用户的不同,用程序设置不同的数据区域可以编辑,比如文档中有两个数据区域PO_A、PO_B,当A用户登录系统编辑文件的时候只有数据区域PO_A的位置是可以编辑的,当B用户登录系统编辑文件的时候只有PO_B的位置是可以编辑的,这样就可以实现两个用户同时编辑一份文档,同理多个用户也可以使用这种方式,并且可以给不同的用户分配不同数量的编辑区域,就是说,可能A用户登录系统后可以编辑的数据区域可能不只是PO_A,还可以有PO_A2、PO_A3……,根据需求可以灵活处理。 上面的方法只是实现了文件的多人在线同时编辑,还需要处理保存文件时,文件内容的同步问题,解决这个问题需要使用“把数据区域中的内容提取出来,保存为一个子Word文档”的功能。PageOffice的企业版可以支持把每个数据区域中的内容保存成一个单独的word文档,也就是拆分word文件,那么在每个用户保存word文档时,只把当前用户所属数据区域中的内容保存成子文档,比如说A用户保存时,只是把数据区域PO_A中的内容保存成一个单独的word文件:a.doc;B用户保存时,只是把数据区域PO_B中的内容保存成一个单独的word文件:b.doc,这样的话,主文档123.doc无需保存,这样一来就不会出现多人编辑的文件保存时互相覆盖的问题。 最后,实现同步其他用户编辑的文件内容。当A用户编辑一段时间后,需要知道其他用户(比如说:B用户)的编辑情况,那么就需要先执行保存,把自己编辑的内容保存后,刷新,再次打开文档123.doc,利用PageOffice可以在数据区域插入其他word文档的功能,通过程序自动把a.doc、b.doc等其他用户保存过的内容重新插入到主文档123.doc中,查看这份重新生成的新文档。