22

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

7 回答 7

69

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

打开 DCOM 配置设置:

  1. 开始->dcomcnfg.exe
  2. 计算机
  3. 本地计算机
  4. 配置 DCOM
  5. 搜索Microsoft Word 97-2003 Documents-> 属性

选项卡Identity,从 更改Launching UserInteractive User

于 2012-07-06T09:43:03.633 回答
25

试试这个可能对你有帮助。

  • 在“C:\Windows\SysWOW64\config\systemprofile\”中创建一个新的“桌面”目录

经过漫长漫长的一天寻找解决方案后,它对我有用。

这似乎是一个配置文件问题。

于 2014-07-10T08:23:40.500 回答
2

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

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

编辑于 2019-09-29。 由于 Windows 大更新,我不得不重新进行确切的进度。

于 2018-11-23T15:12:43.587 回答
1

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

  • 创建目录:

    • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • 正如@gianni-b 所说,启用 DCOM 设置。

如果您因为语言不同而难以找到 DCOM 条目,您可以这样做:

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

    • 对于键,放RunAs
    • 对于价值,把Interactive User

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

于 2018-03-16T12:53:22.243 回答
1

这对我有用。 https://social.msdn.microsoft.com/Forums/en-US/0f5448a7-72ed-4f16-8b87-922b71892e07/word-2007-documentsopen-returns-null-in-aspnet

如果这对你有帮助,请回答

于 2015-09-29T08:45:31.887 回答
0

正如 Paulie 在他对 OP 的评论中所说,我认为这个问题主要是因为网络服务器上的库。您可能能够破解以使其在网络应用程序上运行,但我建议不要这样做。

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

有一个使用 DocX 格式的开放库(在此处输入链接描述)。不幸的是,他在页面上承认,如果没有 Office.Interop 库,几乎不可能转换为 PDF 等格式(http://cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html )

是一个“有希望”的替代方案,但 YMMV。

于 2012-05-31T16:26:03.887 回答
0

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

于 2012-06-01T08:31:52.067 回答