确定Interop.Excel.dll,和可执行文件在同一个目录。
打开release 或 debug目录看看。

解决方案 »

  1.   

    我以前也碰到過此問題,估計是引用錯了
    我電腦上安裝了Office2003和2007
    結果我引用了2007的,其他人用不了
      

  2.   

    確定bin\debug文件夾下有Interop.Excel.dll、
    我的還用到了Interop.OWC11.dll
      

  3.   

    对Office的操作,如果不能按数据源来操作,最好使用后期的绑定,前期绑定在操作上可能很好,可是如果版本或引用不一致就会出问题.
      

  4.   

    如果能按数据源的方式来导入导出数据这是最快的,
    如果觉得要灵活处理可以使用后期的绑定,对于前期引用和后期的引用的区别可以参考如下的两个方法:
    private void btnLater_Click(object sender, EventArgs e)
    {
    object objApp;
    object objBook;
    object objBooks;
    object objSheets;
    object objSheet;
    object objRange;
    object[] Parameters; try
    {
    // Get the class type and instantiate Excel.
    Type objClassType;
    objClassType = Type.GetTypeFromProgID("Excel.Application");
    objApp = Activator.CreateInstance(objClassType); //Get the workbooks collection.
    objBooks = objApp.GetType().InvokeMember("Workbooks",
    BindingFlags.GetProperty, null, objApp, null); //Add a new workbook.
    objBook = objBooks.GetType().InvokeMember("Add",
    BindingFlags.InvokeMethod, null, objBooks, null); //Get the worksheets collection.
    objSheets = objBook.GetType().InvokeMember("Worksheets",
    BindingFlags.GetProperty, null, objBook, null); //Get the first worksheet.
    Parameters = new Object[1];
    Parameters[0] = 1;
    objSheet = objSheets.GetType().InvokeMember("Item",
    BindingFlags.GetProperty, null, objSheets, Parameters); //Get a range object that contains cell A1.
    Parameters = new Object[2];
    Parameters[0] = "A1";
    Parameters[1] = Missing.Value;
    objRange = objSheet.GetType().InvokeMember("Range",
    BindingFlags.GetProperty, null, objSheet, Parameters); //Write "Hello, World!" in cell A1.
    Parameters = new Object[1];
    Parameters[0] = "Hello, World!";
    objRange.GetType().InvokeMember("Value", BindingFlags.SetProperty,
    null, objRange, Parameters); //Return control of Excel to the user.
    Parameters = new Object[1];
    Parameters[0] = true;
    objApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
    null, objApp, Parameters);
    objApp.GetType().InvokeMember("UserControl", BindingFlags.SetProperty,
    null, objApp, Parameters);
    }
    catch (Exception theException)
    {
    String errorMessage;
    errorMessage = "Error: ";
    errorMessage = String.Concat(errorMessage, theException.Message);
    errorMessage = String.Concat(errorMessage, " Line: ");
    errorMessage = String.Concat(errorMessage, theException.Source); MessageBox.Show(errorMessage, "Error");
    }
    }private void btnEarly_Click(object sender, EventArgs e)
    {
    Excel.Application objApp;
    Excel._Workbook objBook;
    Excel.Workbooks objBooks;
    Excel.Sheets objSheets;
    Excel._Worksheet objSheet;
    Excel.Range range; try
    {
    // Instantiate Excel and start a new workbook.
    objApp = new Excel.Application();
    objBooks = objApp.Workbooks;
    objBook = objBooks.Add(Missing.Value);
    objSheets = objBook.Worksheets;
    objSheet = (Excel._Worksheet)objSheets.get_Item(1); range = objSheet.get_Range("A1", Missing.Value); range.set_Value(Missing.Value, "Hello, World!"); //Return control of Excel to the user.
    objApp.Visible = true;
    objApp.UserControl = true;
    }
    catch (Exception theException)
    {
    String errorMessage;
    errorMessage = "Error: ";
    errorMessage = String.Concat(errorMessage, theException.Message);
    errorMessage = String.Concat(errorMessage, " Line: ");
    errorMessage = String.Concat(errorMessage, theException.Source); MessageBox.Show(errorMessage, "Error");
    }
    }
      

  5.   

    如果是asp.net,用excel组件有权限问题。