你用是 professional版的吧, 直接用Excel名字空间就行了。

解决方案 »

  1.   

    你已经添加引用了
    就不要用using 了
    哪是多此一举
      

  2.   

    morefish(little)
    你用是 professional版的吧, 直接用Excel名字空间就行了。
    =========================
    太對了
      

  3.   

    最好使用后期绑定操作Excel,这样就不会存在这样的问题及版本的问题了.
      

  4.   

    代码可以参考下面的:
    /// <summary>
    /// 把DataTable的数据导出到Excel文件中
    /// </summary>
    /// <param name="fileName">Excel文件名</param>
    /// <param name="dataTable">要导出的数据表</param>
    /// <param name="errorInfo">操作出错信息</param>
    /// <returns>是否导出成功</returns>
    public static bool GenerateExcel(string fileName, DataTable dataTable, out string errorInfo)
    {
        errorInfo = null;    object objApp;
        object objBook;
        object objBooks;
        object objSheets;
        object objSheet;
        object objCells;
        object[] Parameters;    if (dataTable == null || dataTable.Rows.Count == 0)
        {
            return true;
        }    try
        {
            // 获取Excel类型并建立其实例
            Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
            if (objExcelType == null)
            {
                return false;
            }
            objApp = Activator.CreateInstance(objExcelType);
            if (objApp == null)
            {
                return false;
            }
            //获取Workbook集
            objBooks = objApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, objApp, null);        //添加一个新的Workbook
            objBook = objBooks.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objBooks, null);        //获取Sheet集
            objSheets = objBook.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, null, objBook, null);        //获取第一个Sheet对象
            Parameters = new Object[1] { 1 };
            objSheet = objSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, objSheets, Parameters);        try
            {
                //写入表头信息
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    Parameters = new Object[2] { 1, i + 1 };
                    objCells = objSheet.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, objSheet, Parameters);
                    //向指定单元格填写内容值
                    Parameters = new Object[1] { dataTable.Columns[i].Caption };
                    objCells.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objCells, Parameters);
                }
                //写入表中数据内容
                for (int i = 0; i < dataTable.DefaultView.Count; i++)
                {
                    for (int col = 0; col < dataTable.Columns.Count; col++)
                    {
                        Parameters = new Object[2] { i + 2, col + 1 };
                        objCells = objSheet.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, objSheet, Parameters);
                        //向指定单元格填写内容值
                        Parameters = new Object[1] { dataTable.DefaultView[i][col].ToString() };
                        objCells.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objCells, Parameters);
                    }
                }
            }
            catch (Exception operExce)
            {
                errorInfo = operExce.Message;
                return false;
            }
            finally
            {
                //不提示保存
                Parameters = new Object[1] { false };
                objApp.GetType().InvokeMember("DisplayAlerts", BindingFlags.SetProperty, null, objApp, Parameters);            //保存文件并退出
                Parameters = new Object[1] { fileName };
                objBook.GetType().InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, objBook, Parameters);
                objApp.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, objApp, null);
            }
            return true;
        }
        catch (Exception appExce)
        {
            errorInfo = appExce.Message;
            return false;
        }
    }