Interop.Word Documents.Open为null

nav*_*100 18 c# asp.net ms-word openxml asp.net-4.0

我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)

Gia*_* B. 62

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

打开DCOM配置设置:

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

标签Identity,从更改Launching UserInteractive User

  • 请注意,在Windows 64位操作系统上,您必须以32位模式MMC -32启动MMC,然后添加组件服务.否则你只看到64位组件.请参阅使用Schprit的IT http://schprit.blogspot.com/2010/11/using-microsoft-office-2007-with-dcom.html (7认同)
  • 该解决方案可行,是的,但仅限用户始终登录服务器.从http://support2.microsoft.com/kb/176799,读取:"交互式用户:应用程序将使用当前登录到计算机的用户的安全上下文运行.如果选择此选项并且用户未登录在,然后应用程序将无法启动." (6认同)

小智 19

试试这可能会对你有所帮助.

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

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

它接缝成为个人资料问题.


Kev*_*oet 6

我执行了以下步骤并且一切正常:

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

编辑于2019年9月29日。 由于 Windows 进行了重大更新,我不得不重新执行确切的进度。


Kil*_*ine 0

正如 Paulie 在他对 OP 的评论中所说,我认为这个问题很大程度上是由于网络服务器上的库造成的。您也许可以通过破解来使其在网络应用程序上运行,但我建议不要这样做。

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

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

是一个“有前途”的替代方案,但是YMMV。