之前做word转pdf时经常会遇到一些问题,花费了很长时间整理了一些解决方法
1、 代码
Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();Microsoft.Office.Interop.Word.Document document = new Microsoft.Office.Interop.Word.Document();try{application.Visible = false;document = application.Documents.Open("d://1.doc");if (document == null){//WriteLog("document is null");//打印日志}document.ExportAsFixedFormat("d://1.pdf", WdExportFormat.wdExportFormatPDF);}catch (Exception ex){}finally{document.Close();application.Quit();}
一、检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
1、第一种办法
1、 在"开始"->“运行"中输入dcomcnfg.exe启动"组件服务”
2、 依次双击"组件服务"->“计算机”->“我的电脑”->“DCOM配置”
3、 在"DCOM配置"中找到"Microsoft word 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft word 应用程序属性"对话框
4、点击"标识"标签,选择"交互式用户"
5、点击"安全"标签,在"启动和激活权限"、”访问权限”、”配置权限”上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名)和EveryOne用户,并给它赋予"本地启动"和"本地激活"权限
如果找不到Word请看序号二
2、第二种办法
在web.config中使用身份模拟,在<system.web>节中加入
</system.web>
3、第三种办法
如果环境是Server的:
打开IIS管理工具,设置应用程序池属性;右击对应的应用程序池,单击“高级设置”,在弹出的界面中找到“标识”把其内置账户修改为LocalSystem。这种简单有效。报表和word都可以。
二、如果在DCOM配置里面找不到Word文档怎么办?
- 第一种办法
因为office是32位的,电脑是64位的,在运行里面输入comexp.msc -32
依次打开”组件服务–计算机–我的电脑–DCOM配置“
2、第二种办法
如果第一种办法找不到
Word可能是以这种存在”{00020906-0000-0000-C000-000000000046}“
查看方法:
选中 {00020906-0000-0000-C000-000000000046} 点击属性 找到 本地路径:C:\PROGRA2\MICROS1\Office12\WINWORD.EXE
如果上面方法还是没找到word组件,请用下面的方法
一般组件在未被赋值权限时,直接使用,会提示
检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
所以此时,复制000209FF-0000-0000-C000-000000000046
在运行中 输入 regedit 打开注册表
进行收索“000209FF-0000-0000-C000-000000000046”,你会找到下面这个:
将“AppID”修改为“CLSID” 然后保存 重启服务器
之后查看组件服务应该就会出现了
**
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word.Application”。此操作失败的原因是对 IID 为 ·{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败
**: 库没有注册
这个问题原因是因为安装了高版本的office然后卸载掉,又安装了低版本的office导致的。或者是这个问题就是由于WPS恶意更改了office的Com组件注册权限。
修改hkey_classes_root\typelib{00020905-0000-0000-c000-000000000046}下把8.7的文件夹删掉。
或者搜索”{00020970-0000-0000-C000-000000000046}“将下面的文件删掉
提示错误信息“未将对象引用到对象实例”
解决方法:缺少插件
提示错误信息“检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。”
这种错误很奇怪,因为是在服务器上安装的office2007,只要关闭了远程连接就提示这个错误
(如果没有发生这种错误,还是选择交互式用户)
解决办法:添加用户administrator,并填写密码
从 IClassFactory 为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法
1、在命令行中输入:dcomcnfg,会显示出“组件服务”管理器
2、打开“组件服务->计算机->我的电脑->DCOM 配置”,找到“Microsoft Word文档”,单击右键,选择“属性”
3、在“属性”对话框中单击“标识”选项卡,选择“交互式用户””,关闭“组件服务”管理器。
修改好之后,重启服务器就可以了