Interop.Word Documents.Open为null
我正在尝试使用Interop.Word.Application打开.docx文件并转换为PDF。 它作为控制台应用程序,但如果我在我的Web应用程序中使用相同的,它不起作用。 我试图查看该文件夹的权限。 我给了’网络服务’完全控制,但我仍然没有设置对象引用word.Documents.Open。 你能告诉我可能是什么问题吗? 我遇到了这个错误。 请告诉我。 我很感激任何建议。 谢谢。
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); object oMissing = System.Reflection.Missing.Value; word.Visible = false; word.ScreenUpdating = false; string fileName = @"c:\OUTPUT\test.docx"); Document doc = word.Documents.Open(filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); doc.Activate();
如果您仍在寻找答案,我刚才为我的项目找到了答案。
打开DCOM配置设置:
- 开始 – >
dcomcnfg.exe
- 电脑
- 本地电脑
- 配置DCOM
- 搜索
Microsoft Word 97-2003 Documents
– >属性
选项卡Identity
,从Launching User
更改为Interactive User
试试这可能会对你有所帮助。
- 在“C:\ Windows \ SysWOW64 \ config \ systemprofile \”中创建一个新的“桌面”目录
经过漫长的漫长的一天寻找解决方案后,它对我有用。
它接缝成为个人资料问题。
如果这对你有帮助,请回答
正如Paulie在他对OP的评论中所说,我认为这个问题主要是因为网络服务器上的库。 你可能会破解让这个工作在一个网络应用程序,但我建议反对它。
编辑 :唉,我误读了post,只是假设Excel。 根据我的经验,这是大多数人在使用Office.Interop时所寻求的;)
有一个可以使用DocX格式的开放式库( 在此处输入链接描述 )。 遗憾的是,他在页面上承认,如果没有Office.Interop库( http://cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html) ,转换为PDF等格式几乎是不可能的。 )
这是一个“有前途”的选择,但是YMMV。
您的Web服务器上很可能有一个不同的单词dll,可能是较旧的单词。 我建议您引用一个特定的dll并将其复制到Web服务器,这样您就可以确定使用的是与您测试代码相同的单词dll,并且您知道它有效。 使用互操作时可能会出现一些问题,但是,单词互操作是唯一可以确保最正确转换单词文件的单词。
要解决这个问题,我必须做两件事:
-
创建目录:
-
C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCache
-
C:\Windows\System32\config\systemprofile\Desktop
-
-
启用DCOM设置为@ gianni-b说 。
如果由于语言不同而难以找到DCOM条目,则可以执行以下操作:
- 开始菜单>
regedit
- 导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
-
右键单击>新建>字符串值
- 对于Key,放入
RunAs
- 对于Value,请填写
Interactive User
- 对于Key,放入
您可以在AppID {00020812-0000-0000-C000-000000000046}
上对Excel执行相同{00020812-0000-0000-C000-000000000046}
。