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配置设置:

  1. 开始 – > dcomcnfg.exe
  2. 电脑
  3. 本地电脑
  4. 配置DCOM
  5. 搜索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\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • 启用DCOM设置为@ gianni-b说 。

如果由于语言不同而难以找到DCOM条目,则可以执行以下操作:

  1. 开始菜单> regedit
  2. 导航到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
  3. 右键单击>新建>字符串值

    • 对于Key,放入RunAs
    • 对于Value,请填写Interactive User

您可以在AppID {00020812-0000-0000-C000-000000000046}上对Excel执行相同{00020812-0000-0000-C000-000000000046}