C# 无法加载文件或程序集';Office,版本=15.0.0.0';

C# 无法加载文件或程序集';Office,版本=15.0.0.0';,c#,.net,import-from-excel,C#,.net,Import From Excel,我使用Vs2013。我已经创建了一个应用程序,其中我使用Excel文件作为输入,并从该文件中获取联系人。 我的电脑一切正常。我有Vs2013。Windows 8.1、Ms office 2007和2013。 当我在任何其他计算机上运行我的应用程序时,它会抛出 无法加载文件或程序集“office,版本=15.0.0.0,区域性=中性,PublicKeyToken=71e9bc111e9429c”或其依赖项之一。系统找不到指定的文件 根据我的申请要求,从2007年到2013年,我需要使用Excel文

我使用Vs2013。我已经创建了一个应用程序,其中我使用Excel文件作为输入,并从该文件中获取联系人。 我的电脑一切正常。我有Vs2013。Windows 8.1、Ms office 2007和2013。
当我在任何其他计算机上运行我的应用程序时,它会抛出

无法加载文件或程序集“office,版本=15.0.0.0,区域性=中性,PublicKeyToken=71e9bc111e9429c”或其依赖项之一。系统找不到指定的文件

根据我的申请要求,从2007年到2013年,我需要使用Excel文件


我已经提到了几个StackOverflow链接,但我没有得到结果。我被卡住了。请告诉我如何解决这个问题

您的其他计算机需要安装相应版本的Office。15.0.0.0应与Office 2013相对应,后者需要安装在目标计算机上(其他版本的Office可能无法工作)。这几乎肯定意味着您使用的是MSOffice互操作库,只有在安装了office并针对同一版本的情况下,该库才有效


或者,您可以重构代码,直接读取Excel XML。

我通过更改Excel.dll版本获得了解决方案。我用的是15.0.0.0,现在我把它改成了12.0.0.0,工作正常。
我从
Add reference>Browse>C:>Windows>assembly>GAC>Microsoft.Office.Interop.Excel>12.0.0\u etc>Microsoft.Office.Interop.Excel.dll获得了dll

我创建了一个批处理文件来解决此问题。请参见下面的脚本:

    echo off
        cls
        color 1f
        echo Checking for Administrator elevation.
        openfiles>nul 2>&1

            if %errorlevel% EQU 0 goto isadmin

                COLOR 4f
            echo.    You are not running as Administrator.
            echo.    This tool cannot do it's job without elevation.
            echo.
            echo.    You need run this tool as Administrator.
            echo.

            echo.Press any key to continue . . .
            pause>nul
        exit
        :isadmin
        if exist c:\windows\assembly\GAC_MSIL\office\16.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=16
    if exist c:\windows\assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=15
    if exist c:\windows\assembly\GAC_MSIL\office\14.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=14

    md c:\windows\assembly\GAC_MSIL\office\12.0.0.0__71e9bce111e9429c
    xcopy c:\windows\assembly\GAC_MSIL\office\%officever%.0.0.0__71e9bce111e9429c c:\windows\assembly\GAC_MSIL\office\12.0.0.0__71e9bce111e9429c /s/y
pause

即使我有Office 2010,但GAC下没有Microsoft.Office.Interop.Excel文件夹,我也会收到此错误消息。 我在这里找到了我的案例的解决方案: 您必须引用这些文件夹中的两个dll文件: C:\Windows\assembly\GAC_MSIL\Microsoft.Vbe.Interop\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll 和
C:\Windows\assembly\GAC_MSIL\office\15.0.0.0_uuu71E9BCE111E9429C\office.DLL

我有同样的问题,你应该包括以下软件包(Syncfusion.XlsIO)而不是(Microsoft.office.interop.Excel),因为它只支持Excel 2013,但第一个“Syncfusion.XlsIO”支持Excel 2016

=> using Syncfusion.XlsIO;
以下是代码:

  using (ExcelEngine excelEngine = new ExcelEngine())
                {
                        IApplication application = excelEngine.Excel;
                        application.DefaultVersion = ExcelVersion.Excel2016;
                        IWorkbook workbook = application.Workbooks.Create(1);
                        IWorksheet worksheet = workbook.Worksheets[0];
                        //Adding text to a cell
                        for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
                        {
                           worksheet.Range[1, i].Text = dataGridView1.Columns[i - 1].HeaderText;
                        }

                        for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
                        {
                            for (int j = 0; j < dataGridView1.Columns.Count; j++)
                            {
                                worksheet.Range[i + 2, j + 1].Text = dataGridView1.Rows[i].Cells[j].Value.ToString();
                            }
                        }
                        //Saving the workbook to disk in XLSX format
                        Stream excelstream = File.Create(Path.GetFullPath(@"MyExcelFile.xlsx"));
                        workbook.SaveAs(excelstream);
                        excelstream.Dispose();
                }
使用(ExcelEngine=new ExcelEngine())
{
iaapplication application=excelEngine.Excel;
application.DefaultVersion=ExcelVersion.Excel2016;
IWorkbook工作簿=application.Workbooks.Create(1);
i工作表工作表=工作簿。工作表[0];
//向单元格中添加文本
对于(int i=1;i
如果您想支持2007,则针对的Office版本不正确。至少不针对.NET4.0也是一个错误,嵌入互操作类型功能是非常可取的。不管怎样,按照现在的方式,您必须在您的计算机和目标计算机上安装Office 2007主互操作程序集。您是操作excel文件还是仅从中读取数据?如果我更改excel 12.0.0.0,它是否适用于所有Ms Office 2007至2013版本?1-我从本地驱动器获取excel文件,将其转换为CSV格式并写入数据库。2-我编写创建excel文件,并在其中写入数据库联系人@T.S.如果您只读取和写入数据,而不执行任何“excel功能”,您可以使用
Microsoft.ACE.OleDb
连接到excel,并像使用DB表一样使用excel文件。不管怎样,您似乎缺少Excel.dllI,我已在2台计算机上试用过。它在拥有Ms office 2013的计算机中运行良好。但它不适用于其他拥有Ms office 2007的计算机。由于应用程序处于边缘,我无法改变机制。我必须找到解决办法。在这种情况下你能给我一些建议吗@Dan FieldRight,它需要office 2013。如果您希望它与Office2007兼容,您必须确保根据这些库(nto版本15.0.0.0)进行构建,谢谢。我已将版本更改为12.0.0.0,现在运行正常。尽管我已安装Office 2013并在同一个框中创建了与Office 2013相关的两个文档,但仍出现此错误。使用最新的15.0.4797.1003。请提供解决方案的说明。我们不是代码编写服务,请分享您的知识并描述您是如何创建该解决方案的。非常感谢。我在
GAC
文件夹中找不到
Microsoft.Office.Interop.Excel
。我错过了什么?@TranB.V.Son mine在GAC_MSIL中