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中使用身份模拟

<system.web>节中加入 <identity impersonate="true" userName="你的用户名" password="密码"/> </system.web>

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 置为空,很重要!

这样,这两个问题就解决了!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
microsoft.office.interop.word.dll .dll 本文件能够完美解决系统中缺失microsoft.office.interop.word.dll文件等问题microsoft.office.interop.word.dll文件官方下载。使用前请详细阅读microsoft.office.interop.word.dll丢失修复方法。 microsoft.office.interop.word.dll使用方法: 方法一 一、如果在运行某软件或编译程序时提示缺少、找不到microsoft.office.interop.word.dll等类似提示 下载来的microsoft.office.interop.word.dll拷贝到指定目录即可(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用。 二、将软件包下载下来后,先将其解压(一般都是rar压缩包), 然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。 三、直接拷贝系统对应的microsoft.office.interop.word.dll到系统目录里: 1、Windows 95/98/Me系统,将microsoft.office.interop.word.dll复制到C:\Windows\System目录下。 2、Windows NT/2000系统,将microsoft.office.interop.word.dll复制到C:\WINNT\System32目录下。 3、Windows XP/WIN7/win10系统(64位系统对应64位dll文件,32位系统对应32位dll文件),将microsoft.office.interop.word.dll复制到C:\Windows\System32目录下。 4、如果您的系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64目录。 四、打开"开始-运行-输入regsvr32 microsoft.office.interop.word.dll",回车即可解决。您提供的microsoft.office.interop.word.dll对您有所帮助。 方法二 下载中心下载dll的朋友,可将下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成microsoft.office.interop.word.dll注册(win98不支持)。 下面是系统与dll版本对应的注册bat文件(64位的系统对应64位dll文件,32位系统对应32位的dll文件,如果64位的系统安装32位的dll文件,请将下面的system32替换为SysWOW64即可。) 复制代码代码如下: @echo 开始注册 copy microsoft.office.interop.word.dll%windir%\system32\ regsvr32 %windir%\system32\microsoft.office.interop.word.dll /s @echo microsoft.office.interop.word.dll注册成功 @pause

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值