Microsoft.Office.Interop.Word通过模板生成文档出现的问题经验总结

本人在Word 模板导出时存在的问题主要有两个方面(我使用的是办公软件是WPS):

1.在本机可以正常导出,IIS发布后导出失败!报错信息是:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 拒绝访问。

2.每导出一次word就会增加一个WPS.exe或者WINWORD.exe进程(取决于你使用办公软件,如果杀掉进程只能导出一次,第二次导出就失败。报错信息是:COM对象与基础的RCW分开后就不能再使用。

第一条可以归结为:环境配置问题;第二条可以归结为:杀掉word.exe进程问题

以下是是这两个问题的解决办法:

一、环境配置问题

1.在服务机上安装Microsoft Office 2013(与引用的插件版本相对应,

我引用的Microsoft.Office.Interop.Word 插件版本是15.0.4797.1003对应的word版本是Microsoft Office 2013);

2.配置计算机相应word的DCOM权限

1)"开始"- >"运行"中输入dcomcnfg.exe启动"组件服务"

2)依次双击"组件服务"- >"计算机"- >"我的电脑"- >"DCOM配置"

3)"DCOM配置"中找到"Microsoft word应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft word应用程序属性"对话框

4)点击"标识"标签,选择"交互式用户"

5)点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限

6)依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限

3.web.config中使用身份模拟

节中加入

4.在服务机上安装WPS Office专业版(如果你不使用WPS,这一步可以跳过)

一定要安装专业版的WPS,个人版不能导出,原因是个人版的WPS缺少PIA 插件,如果非要使用个人版,Kingsoft Office PIA下载地址可参照以下链接(还没有亲测,最好使用专业版):

http://download.csdn.net/download/yutiedun/9366829

二、杀掉进程问题。

问题描述:每预览一次PDF就会增加两个wps.exe进程(导出word模板和wordpdf各增加一个进程),如果杀掉进程只能导出一次,第二次导出就失败。

解决办法:

1.初始化时需要实例化一个Word应用程序变量

在方法内需要重新实例化一个Word应用程序变量(以下为wordApp,具体代码如下:

Microsoft.Office.Interop.Word._Application wordApp = null;//Word应用程序变量

if (wordApp == null)//一定要判断wordApp 是否为空

   {

       wordApp = new Application() {

       DisplayAlerts= WdAlertLevel.wdAlertsNone

   };                

   }

2.释放内存

1)生成word后释放内存

object IsSave = true;

missing = System.Reflection.Missing.Value;

wordApp.Quit(ref IsSave, ref missing, ref missing);//退出程序,相当于关闭word   

System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp); //释放内存

wordApp = null;//内存释放完成后,切记要将wordApp 置为空,很重要!

这样,这两个问题就解决了!

你可能感兴趣的:(Microsoft.Office.Interop.Word通过模板生成文档出现的问题经验总结)