Interop.Word Documents.Open为null

时间:2012-05-31 16:17:59

标签: c# asp.net ms-word asp.net-4.0 openxml

我正在尝试使用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();

7 个答案:

答案 0 :(得分:59)

如果您仍在寻找答案,我刚刚为我的项目找到了答案。

打开DCOM配置设置:

  1. 开始 - > dcomcnfg.exe
  2. 电脑
  3. 本地电脑
  4. 配置DCOM
  5. 搜索Microsoft Word 97-2003 Documents - >特性
  6. 标签Identity,从Launching User更改为Interactive User

答案 1 :(得分:18)

试试这可能对你有帮助。

  • 创建一个新的"桌面"目录里面的" C:\ Windows \ SysWOW64 \ config \ systemprofile \"
经过漫长的漫长的一天寻找解决方案后,它对我有用。

它会成为个人资料问题。

答案 2 :(得分:1)

答案 3 :(得分:0)

正如Paulie在他对OP的评论中所说,我认为问题主要是因为网络服务器上的库。你可能会破解让这个工作在一个网络应用程序,但我建议反对它。

编辑:哎呀,我误读了帖子,只是假设了Excel。根据我的经验,这是大多数人在使用Office.Interop时所寻求的;)

有一个可以使用DocX格式(enter link description here)的开放式库。 很遗憾他在页面上承认,如果没有Office.Interop库(http://cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html

,几乎不可能转换为PDF等格式

Here是一个“有前途”的选择,但是YMMV。

答案 4 :(得分:0)

您的网络服务器上很可能有一个不同的单词dll,可能是较旧的单词。我建议您引用一个特定的dll并将其复制到Web服务器,这样您就可以确定使用的是您测试代码的相同单词dll,并且您知道它有效。 使用互操作时可能会出现一些问题,但是,单词互操作是唯一可以确保最正确地转换单词文件的单词。

答案 5 :(得分:0)

要解决这个问题,我必须做两件事:

  • 创建目录:

    • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • 启用DCOM设置as @gianni-b says

如果由于语言不同而难以找到DCOM条目,则可以这样做:

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

    • 对于Key,请添加RunAs
    • 对于Value,请添加Interactive User
  4. 您可以对AppID {00020812-0000-0000-C000-000000000046}上的Excel执行相同操作。

答案 6 :(得分:0)

我做了以下步骤,一切正常:

  • 创建桌面文件夹
  • 更改DCOM元素以使用特定用户而不是启动/交互式用户登录
  • 更改了服务,使其以相同的特定用户身份启动