必须要安装office。
在调用的时候可以判断一下,把03跟07的版本都写上去。用try catch。

解决方案 »

  1.   

    可以不用裝Office的
    用ADO直接去操作
      

  2.   

    ADO直接操作,能不能说详细点啊
      

  3.   

    使用低版本的COM组件操作是可以兼容的
      

  4.   

    我原来用VB操作EXCEL时遇到过这样的问题,我是这样解决的,将所有变量的声明改成Object,再把需要用到的各种版本的excel库文件添加到引用中。OK!C#我没用过,不知道可以用同样的处理方法。你可以试试。下面是我的VB源码,方便你理解。
    'Dim TempApp As Application
    'Dim Exwbook As Excel.Workbook
    'Dim Exsheet As Excel.Worksheet
    Dim TempApp As Object
    Dim Exwbook As Object
    Dim Exsheet As ObjectSet TempApp = CreateObject("Excel.application")
    If TempApp Is Nothing Then MsgBox "请检查是否安装Microsoft Excell软件", vbExclamation, "问题": Exit Sub
    Set Exwbook = TempApp.Workbooks.Add
    Set Exsheet = Exwbook.Worksheets(1)
      

  5.   

    第三方的类库,这样就不需要excel了。
    可以试试这个Koogra
      

  6.   

      OleDbConnection myOleConn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False; data source=" + strFileName + "; Extended Properties='Excel 8.0;PersistSecurityInfo=False;HDR=YES;IMEX=no'");
       myOleConn.Open();
        string sql = "select  [字段1] , [字段2] ,[字段3] from [sheet1$]";
        OleDbDataAdapter MyCommand = new System.Data.OleDb.OleDbDataAdapter(sql, myOleConn);
           DataSet ds = new System.Data.DataSet();
             MyCommand.Fill(ds);
                 myOleConn.Close();
                  return ds.Tables[0];
      

  7.   

    将DataGridView控件中数据导出到Excel函数
     /// <summary>
            /// 将DataGridView控件中数据导出到Excel
            /// </summary>
            /// <param name="gridView">DataGridView对象</param>
            /// <param name="isShowExcle">是否显示Excel界面</param>
            /// <returns></returns>
            public bool ExportDataGridview(DataGridView gridView,bool isShowExcle)
            {
                if (gridView.Rows.Count == 0)
                    return false;
                //建立Excel对象
                Excel.Application excel = new Excel.Application();
                excel.Application.Workbooks.Add(true);
                excel.Visible = isShowExcle;
                //生成字段名称
                for (int i = 0; i < gridView.ColumnCount; i++)
                {
                    excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText;
                }
                //填充数据
                for (int i = 0; i < gridView.RowCount-1; i++)
                {
                    for (int j = 0; j < gridView.ColumnCount; j++)
                    {
                        if (gridView[j, i].ValueType == typeof(string))
                        {
                            excel.Cells[i + 2, j + 1] = "'" + gridView[j, i].Value.ToString();
                        }
                        else
                        {
                            excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
                        }
                    }
                }
                return true;
            }
    然后调用此函数就行了!