当前位置:文档之家› 【说明】关于使用OFFICE控件打开文档失败问题的说明

【说明】关于使用OFFICE控件打开文档失败问题的说明

关于使用iWebOffice控件打开文档失败问题的说明一、前言在使用iWebOffice网络文档控件进行文档流转应用的过程中,有时会遇到文档无法打开的问题(这些问题有的可能是所有的机器都无法打开某个或某些文档,有的可能是部分机器无法打开某个或某些文档)。

这个问题看似杂乱,其实是有规律有原因的。

二、问题原因阐述进行在线编辑应用时,打开文档的操作受三方面的因素影响:文档本身、客户端的OF FICE软件环境、iWebOffice控件。

这三方面任何一种发生异常都会造成打开文档失败的情况。

2.1 文档出现问题的情况1)为什么控件中打开失败的文档在本地可以打开?首先要说明一下,OFFICE软件自身提供了两种调用方式。

一种是本地打开OFFICE软件的应用程序方式(Application,简称APP),另一种是对象连接与嵌入方式(Object Linking and Embedding,简称OLE)。

iWebOffice系列控件调用OFFICE就是用的第二种方式。

这两种调用方式是微软提供的两套独立的调用模式,OLE方式下可以实现大部分APP方式下的应用(注意只是大部分),在实践中我们发现有一些接口的调用在OLE方式下是不行的。

除了接口调用上的差别外,我们还发现APP的方式下稳定性明显好于OLE调用方式,我们甚至怀疑微软没有针对OLE调用方式做足够的测试。

2)为什么产生问题文档?OFFICE稳定性差导致的最大威胁就是保存时容易产生异常文档,因为控件保存的文档本质上是通过OFFICE保存出来再由控件提交给服务器保存。

而OFFICE软件也是程序在运行时也可能因为各种原因而出现问题,所以OFFICE保存出异常文档是不可避免的。

3)问题文档有哪些表现形式这些问题文档有时可能异常的很厉害连APP方式都无法打开,这种情况可以定义为“文档损坏”,损坏一旦严重到APP方式OFFICE都不能打开时就彻底的损失了、无法再修复。

有时可能是轻微的错误,这种情况可以定义为“文档异常”,APP有着更好的稳定性所以可能可以打开(并且OFFICE不会报错,所以看上去就像没有异常),而这种异常的文档可能在O LE下就没那么幸运。

因此我们有时会看到控件中无法打开的文档,但是下载到本地却可以打开,就是APP和OLE的稳定性差异导致的。

另外,也不是异常了的文档在OLE下都会无法打开,真实的情况是不同的OFFICE软件版本下都会有差异。

很可能在A机器可以打开文档,在B机器就无法打开,所以要从根源上解决问题还要具体分析(分析思路之后详述)。

OFFICE软件如果加上SP包后就有非常多的版本,仅从OFFICE2003开始就有:OFFICE2003、OFFICE2003 SP1、OFFICE2003 SP2、O FFICE2003 SP3、OFFICE2007、OFFICE2007 SP1、OFFICE2007 SP2、OFFICE2007 SP3、OFFICE2010、OFFICE2010 SP1。

并且不同时期安装的补丁包里面的子版本号也非常众多,无法有效评估究竟哪种环境最稳定。

因此最妥当的方式是修复文档(修复方法之后详述)。

2.2 OFFICE环境异常的情况如果OFFICE文档正常,而客户端的OFFICE环境异常时(比如安装的是精简版的OFFI CE,或者OFFICE中有部分功能损坏)也会出现文档无法打开的情况。

这种情况出现几率很低,一般是整片区域就出现1、2台电脑不正常,而且这样的电脑环境中可能会所有的OFFI CE文档都不能正常打开,因此还是比较好判断的。

2.3 iWebOffice控件不正常的情况iWebOffice控件如果不正常,一般都会抛出异常或提示信息,大多是和内存地址有关的错误。

不过,在OFFICE环境异常时控件也会因为调用OFFICE软件失败而抛出异常,所以这些异常信息也需要具体来分析。

iWebOffice控件经过多年的升级,已经采取了各种方法尽量减少出现问题文档的几率,以及各种问题判断的手段。

比如保存之前进行文档异常的判断,打开失败时多次尝试等。

从目前我们监测到的情况分析,控件原因而导致出现问题的情况已经极少。

三、解决问题思路为了解决文档打开这个问题,我们经过多年的分析和研究,总结出了一条非常有效的分析问题的思路。

1、先看看是某个客户端无法打开还是所有机器都无法打开?前者的话可能是这个机器的环境问题,但还需要进一步的核实。

如果所有机器都无法打开的文档,很大可能性是要打开的这篇文档有问题。

可以把文档文件从服务器上取下来,复制到本地再尝试脱离控件使用本地OFFICE打开。

如果可以打开就修复处理一下(修复的方法后面详述),如果本地OFFICE也不能打开文档就说明文档已经损坏,并且无法修复。

2、再看看是某些文档无法打开,还是所有的文档都无法打开?在出现问题的机器上,我们再核实是否所有的文档都无法打开。

如果所有的文档都无法打开则客户端的环境肯定有问题,可以尝试卸载后重装OFFICE软件(一定要是标准版OFFI CE,不能是精简版),并打上最新的SP补丁包。

OFFICE2003最新有SP3补丁包,OFFICE20 07最新有SP3补丁包,OFFICE2010最新有SP1补丁包,上述补丁都可以在微软网站上下载,安装不会验证相关版权信息。

如果是某些文档无法打开,由于经过之前步骤1的判断这里的文档应该是部分机器不能打开,这时可以暂时判断为有可能是文档有异常。

也需要把文档文件从服务器上取下来,复制到本地再尝试脱离控件使用本地OFFICE打开,并进行修复处理(修复的方法后面详述)。

四、改善稳定性的方法为了减少出现文档异常的几率,金格一直在研究和分析问题的原因、表现形式和避免的方法,以目前我们积累的经验告诉我们应该注意以下几个方面:1)不要使用非标准的OFFICE软件精简版、测试版、体验版等非标准的OFFICE软件可能会功能不全,或者稳定性很差,应该避免使用这类的OFFICE软件。

有些系统安装后就自带一些OFFICE软件,也需要检查一下版本情况,如果不是标准版也需要更换成标准版。

2)尽量使用高版本的OFFICE软件不打补丁的OFFICE软件稳定性比较差,特别是OFFICE2003。

因此我们建议尽量使用O FFICE2007或更高版本的OFFICE软件,并打上最新的SP补丁包。

一定要使用OFFICE2003的情况下也必须打好SP3的补丁包。

安装了补丁包的版本稳定性会有明显的改善,这是减少OF FICE出现异常的最重要的手段。

3)不要使用非标准的操作系统不要使用非标准的、经过第三方修改的操作系统。

一些象“番茄花园”或“GHOST版”的操作系统来源不明、功能经过删减,极有可能带来问题隐患。

金格已经遇到过多起因为使用精简系统而出现问题的案例。

4)减少病毒干扰用户应当尽量保证应用环境的安全,经常或定期查杀病毒。

我们建议在有条件的情况下尽量使用国外的杀毒安全产品,这样即可以保证杀毒效果也不会留下一些意想不到的后门。

5)减少第三方插件的干扰用户环境最好能尽量禁用IE中不经常使用的插件,以及一些下载软件的插件。

这类插件常驻IE内存中,有时它们出现异常也会影响IE、iWebOffice控件甚至OFFICE软件的稳定性。

6)尽可能应用较新版本的iWebOffice控件控件总是在不断的更新中增加判断文档异常问题、避免文档异常问题的方法和手段,新版本理论上会有更好的稳定性。

五、文档修复方法5.1 WORD文档的修复方法修复方法一:把文档取下来,在本地用OFFICE软件(最好是打了最新SP补丁的OFFIC E软件)打开,然后新建一个空白文档,复制内容粘贴到新文档中,之后保存新文档放回服务器替换之前的文档,再试试看客户端是否可以打开了。

修复方法二:使用打了最新SP补丁包的OFFICE2007或OFFICE2010打开文档,之后将文档另存为docx格式,完成后再将文档重新另存为doc格式。

这个方法是利用OFFICE自身保存文档时的修复功能修复文档,并且docx和doc格式内部差别极大,反复另存时会进行深度的检查和修复,效果极好。

上述两种方法还可以结合使用,经过两种方法修复的文档,基本上都可以保证是正常的了。

5.2 EXCEL文档的修复方法EXCEL的修复和WORD不同,主要是因为EXCEL文档的结构不同造成的。

修复方法一:修复EXCEL的时候,我们先使用打了最新SP补丁包的OFFICE2007或OFF ICE2010打开问题文档,再新建一个EXCEL文档,之后选择SHEET后点击邮件选择“移动或复制……”,之后将SHEET页复制到新建的文档中。

完成所有SHEET页的复制后,保存新建的文档再替换回服务器,再试试看客户端是否可以打开了。

这个方法主要用于修复“工作表”内有损坏或异常的情况。

修复方法二:也是先使用打了最新SP补丁包的OFFICE2007或OFFICE2010打开问题文档,再新建一个EXCEL文档,之后复制SHEET中的全部单元格内容,粘贴到新的文档的SH EET中。

完成所有SHEET页的单元格内容的复制后,保存新建的文档再替换回服务器,再试试看客户端是否可以打开了。

这个方法主要用于修复“工作表”和“工作簿”内有损坏或异常的情况。

5.3 修复时注意事项由于iWebOffice2006和2009保存的是包含“OFFICE文档数据”加“全文批注数据”在一起的复合文档,所以这类无法直接用OFFICE软件编辑,需要先使用金格提供的分离OFFI CE文档数据的工具OFFICE文档保存出来之后,再进行修复。

六、其他说明也许看到这里,有些人会认为我们还没有把问题分析的足够全面。

其实恰恰相反,由于这个问题出现已经有很多年,为了这个问题我们做了大量的测试和优化。

比如:控件在传输中就加入了哈希验证,以确保传输过程中数据的正确性;控件提供的保存文件方式也做了相应的验证和异常判断,避免磁盘操作时损坏文件的情况;控件在保存前会进行再次打开的测试;控件会在打开失败后反复尝试打开文档等等。

总而言之,金格已经在所有可以入手的地方对这个问题做了全面的监控和判断验证。

而由于OFFICE控件应用方式的特殊性(OLE方式调用OFFICE进行文档编辑),造成无法100%避免OFFICE不出问题、不保存出异常文档,并且OFFICE软件及OFFICE文档都没有公开过技术结构,对于这种黑盒的应用模式确实无法从本质上解决问题。

不过反过来看,O FFICE自身提供的修复机制、APP应用时的损坏提示机制,也从侧面说明OFFICE的稳定性并不是铁板一块。

因此我们也希望客户能够理解这个问题的本质和根源,对这种问题的出现要有心理准备。

最后,金格会尽一切努力维护我们的用户以及合作伙伴的利益,在出现问题时第一时间响应,在出现问题时将问题的影响减轻到最低,在出现问题时为用户和合作伙伴分析问题、说明情况,与我们的用户和合作伙伴共同进退。

相关主题