我正在尝试使用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();
答案 0 :(得分:59)
如果您仍在寻找答案,我刚刚为我的项目找到了答案。
打开DCOM配置设置:
dcomcnfg.exe
Microsoft Word 97-2003 Documents
- >特性标签Identity
,从Launching User
更改为Interactive User
答案 1 :(得分:18)
试试这可能对你有帮助。
它会成为个人资料问题。
答案 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\INetCache
C:\Windows\System32\config\systemprofile\Desktop
启用DCOM设置as @gianni-b says。
如果由于语言不同而难以找到DCOM条目,则可以这样做:
regedit
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
右键单击>新>字符串值
RunAs
Interactive User
您可以对AppID {00020812-0000-0000-C000-000000000046}
上的Excel执行相同操作。
答案 6 :(得分:0)
我做了以下步骤,一切正常: