刚刚在写有关Word的操作,其中之一就是数据表的导出。代码运行一开始没有问题,但是数据量大了以后,导出一半,就报了“消息筛选器显示应用程序正在使用中”的错误,让我百思不得其解。反复检查了代码确信代码没有问题。于是上网找解决方法。但是网上说的都是一些组件权限问题引起的拒绝访问的错误。而我操作Word确是偶尔会遇到这个错误,一般情况下正常,只有数据量大时才会报这个错。所以觉得很诡异。
想来想去,只有一种可能会导致这样的问题,那就是有其它程序在访问我所操作的Word或者Word的进程被程序占用了。但是到底是什么东西在作怪呢。我反复试验了几次之后算是明白。现在来说说导致这个问题的根源:
原因就是:word拼写检查
当我向Word插入大量数据后,Word的自动拼写检查检测到大量的拼写错误,于是Word弹出了一个提示框,提示用户存在过多的拼写错误。而我们程序操作Word是让Word运行在后台,所以程序并不知道Word弹了一个对话框。当程序继续向Word插入数据时,因为Word的对话框阻塞的Word的进程,所以就会报“消息筛选器显示应用程序正在使用中”错误。
知道根源后解决起来就简单了:
引用 Microsoft.Office.Interop.Word.dll
Word.Application word=new Word.ApplicationClass();
Word.Document doc=word.Documents.Add(ref missing,ref missing,ref missing,ref missing);
doc.SpellingChecked=false;
doc.ShowSpellingErrors=fase;
关闭Word的拼写检查就行了。
问题解决OK。