无法加载文件或程序集'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'。

4

我希望您能够将docx文件转换为pdf,我已经成功地在我的本地电脑上进行了转换。

我在Visual Studio 2010中遵循的步骤是:

click on Add reference --> Click to COM -->select "Microsoft Word 12.0 Object Library" and cliked ok

我的Web配置文件被修改并添加了程序集

<add assembly="Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>

我转换doc到pdf的.cs代码如下:

using Microsoft.Office.Interop.Word;//Name Space


protected void Page_Load(object sender, EventArgs e)//Coading on page load
{

    Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
    wordDocument = appWord.Documents.Open(Server.MapPath("~/convert/goodquest.docx"));
    wordDocument.ExportAsFixedFormat(Server.MapPath("~/convert/goodquest.pdf"), WdExportFormat.wdExportFormatPDF);
}

public Microsoft.Office.Interop.Word.Document wordDocument { get; set; }

所有代码在本地运行良好,但是上传到 Web 后会发生变化。

出现的错误如下:

Could not load file or assembly 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.

出现了一些问题,该怎么解决呢?

我还尝试从这里下载了“Microsoft Office 2010:主要Interop程序集可再分发”,但是当我按照之前告诉您的步骤“点击添加引用-->单击COM........”时,它将我的“版本=12.0.0.0”转换为“版本=14.0.0.0”。


我已经更新了我的答案,请现在去那里看看。 - Ramesh Rajendran
您错过了正确的版本,请检查一下。 - Ramesh Rajendran
好的,现在从此链接下载 http://www.microsoft.com/en-us/download/confirmation.aspx?id=18346 - Alps
我已经安装了2007年微软办公系统更新,我的版本已更改为14.0版本。 - Alps
1
在ASP.NET或其他服务器技术中使用Office Interop是一个可怕的想法。这些API是为桌面应用程序编写的,用于自动化Office(一套桌面应用程序)。服务器应用程序在许多方面都不同,因此在其中使用Office Interop是非常糟糕的想法。这也不受Microsoft支持,并且可能违反您的Office许可证。请参阅考虑在服务器端自动化Office时的注意事项 - John Saunders
显示剩余5条评论
4个回答

3
Microsoft.Office.Interop.Word.dll 复制并粘贴到服务器的 bin 文件夹中。可能会添加到此路径中:%ProgramFiles%\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\,但我不确定是否正确:更多详细信息请参见此MSDN链接。否则,您可以下载此 dll:https://dev59.com/y0vSa4cB1Zd3GeqPh-T6#6309218

我应该从哪里获取?你能给我提供链接吗? - Alps
我已经安装了2007年微软办公系统更新,我的版本变成了14.0版本。 - Alps
@RonakBhatt,你能提供12.0的正确版本链接吗?因为我也没有得到那个链接。我遇到了同样的问题,我已经下载了它们,但它们被转换成了14.0。 - Mitesh Jain
@RameshRajendran,你能提供12.0的正确版本链接吗?因为我也没有得到那个链接。我遇到了同样的问题,我已经下载了它们,但它们被转换成了14.0。 - Mitesh Jain
@RameshRajendran,请查看https://dev59.com/mHvaa4cB1Zd3GeqPFJdN。 - Mitesh Jain

0

你是否将 DLL (Microsoft.Office.Interop.Word) 复制到可执行路径?

你必须将此 DLL 复制到本地路径,否则 Microsoft Office 必须安装在此服务器上。

查看错误,似乎应用程序无法在指定路径中找到文件。

默认情况下,应用程序将首先在 GAC 中查找 DLL,否则在本地路径中查找。还可能有其他原因,例如版本不同,在这种情况下,您也会收到类似的错误。


我安装了2007年的Microsoft Office系统更新,我的版本变成了14.0版本。 - Alps
好的,那么在这种情况下,您应该在本地计算机上安装与 DLL 版本完全相同的版本才能使其正常工作。请安装相同的 Office 版本,或者您可以将相同的 DLL 保留在本地路径中,并从 GAC 中删除 DLL(如果有的话),这也应该可以解决问题。 - Nil23
@Nil23,你能提供一个正确的12.0版本链接吗?因为我也没有找到那个链接。我遇到了同样的问题,我已经下载了它们,但它们被转换成了14.0版本。 - Mitesh Jain
@Nil23请查看https://dev59.com/mHvaa4cB1Zd3GeqPFJdN。 - Mitesh Jain

0

您错过了 DLL 版本。

请下载正确的 DLL 版本。


你能提供给我12.0的正确版本链接吗?我找不到那个链接。 - Alps
请查看以下链接:https://dev59.com/mHvaa4cB1Zd3GeqPFJdN - Mitesh Jain

0

在C#项目中使用Word的正确步骤是:

  1. 添加对Word Interop库(程序集)的引用
  2. using部分添加Excel
  3. 现在可以在您的编码中使用它。


第一步是确保您的电脑上安装了Office(Word)。如果没有,请先安装。然后添加对所需版本的Microsoft.Office.Interop.Word的引用。

a. 如果列表中没有显示所需版本,则可能安装了另一个带有Word的Office版本。顺便说一下,您可以使用任何版本。

b. 如果您找不到类似于Microsoft.Office.Interop的内容,则可能未安装Office或者您安装的是Office 2013或更高版本。对于更高版本,您可以通过进入“添加引用”窗口的COM选项卡并添加Microsoft Word {version-no} Object Library来添加程序集。这将添加相同的内容。

c. 如果您已经在引用中有带有黄色三角形标记的Microsoft.Office.Interop...,则首先要将其删除。



接下来第二步将完全生效:using Word=Microsoft.Office.Interop.Word;



最后,你可以通过Word.Application wApp = new Word.Application();创建Word对象,这是第三步。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接