急啊,怎么样把WINFORM中的datagridview导出成Excel文件.
希望各位大侠给出能用的源码!
谢谢

解决方案 »

  1.   

    datagridview导出成Excel文件并没有什么直接简易的方法要么就是调用Excel类库,逐行甚至逐格地写Excel文件;要么可以考虑使用一些第三方的表格控件,例如FarPoint Spread控件,他就直接提供了SaveExcel()方法
      

  2.   

    也可以从dgv的数据源入手 使用sql语句来操作excel例如:                                 string strCmd = string.Empty;
                    conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=No';" + "Data Source= " + @"d:\test.xls");
                    cmd = new OleDbCommand();
                    cmd.Connection = conn;
                    conn.Open();
                    strCmd = "create Table [Sheet1](";
                    foreach (DataColumn dc in ds.Tables[0].Columns)
                    {
                        strCmd += "[" + dc.ColumnName + "] nvarchar(20),";
                    }
                    strCmd = strCmd.Trim().Substring(0, strCmd.Length - 1);
                    strCmd += ")";
                    cmd.CommandText = strCmd;                cmd.ExecuteNonQuery();                foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        if (dr.RowState != System.Data.DataRowState.Deleted)
                        {
                            strCmd = "insert into [Sheet1] values(";
                            foreach (DataColumn dc in ds.Tables[0].Columns)
                            {
                                strCmd += "'" + dr[dc.ColumnName].ToString() + "',";
                            }                        strCmd = strCmd.Substring(0, strCmd.Length - 1);
                            strCmd += ")";                        cmd.CommandText = strCmd;                        cmd.ExecuteNonQuery();
                        }
                    }                
                    conn.Close();
      

  3.   

    把excel的com组件加入程序,加载命名空间,然后直接可以使用了
      

  4.   

    先添加引用Office,Excel Excel.Application   excelApp=new   Excel.ApplicationClass(); 
    Excel.Workbook   excelBook; 
    Excel.Worksheet   excelWorkSheet;//Excel中的sheet 
    Excel.Range   range;//单元格 
    excelBook=excelApp.Workbooks.Open(路径, "..... ");
      

  5.   

    用这种方式处理导出Excel         public static void ExeclReport(DataGridView _Grid)
             {
                 SaveFileDialog FileDialog = new SaveFileDialog();
                 FileDialog.Filter = "Excel (*.xls)|*.xls";
                 FileDialog.FilterIndex = 1;    
                 FileDialog.RestoreDirectory = true;
                 if (FileDialog.ShowDialog() == DialogResult.OK)
                 {
                     XmlDocument doc = new XmlDocument();
                     doc.LoadXml("<?xml version='1.0'?><NewDataSet/>");
                     for (int i =0; i < _Grid.Rows.Count; i++)
                     {
                         XmlElement xel = doc.CreateElement("Sheet1");
                         string innerxml = null;
                         for (int z = 0; z < _Grid.Columns.Count; z++)
                         {
                             if (_Grid.Columns[z].Width > 0)
                             {
                                 string Caption = _Grid.Columns[z].HeaderText;                           
                                 System.Collections.IEnumerator myEnumerator = Caption.GetEnumerator();
                                 while ((myEnumerator.MoveNext()) && (myEnumerator.Current != null))
                                 {
                                     char _user = (char)myEnumerator.Current;
                                     if (char.IsPunctuation(_user))
                                     {
                                        Caption=Caption.Replace(_user.ToString(), string.Empty);
                                     }
                                     if (char.IsSeparator(_user))
                                     {
                                         Caption=Caption.Replace(_user.ToString(), string.Empty);
                                     }
                                 }
                                 innerxml += string.Format("<{0}>{1}</{0}>", Caption, _Grid[i,z].Value.ToString());
                             }
                         }
                         xel.InnerXml =innerxml;
                         doc.DocumentElement.AppendChild((XmlNode)xel);
                     }
                     doc.Save(FileDialog.FileName);
                 }
             }
      

  6.   

    有二种方法解决:
    一:
      像楼上说的用第三方控件,或,自己建一个Execl.applicationClass() 然后freach datagrid
      存入workSheet,再转存
    二:
      把execel文件当数据库来使用,
      string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;"; 
     OleDbConnection conn = new OleDbConnection(strConn); 
     conn.Open(); 
     ......
     这时,你需要掉前建一个execel文件,这很容易解决的 完整代码,我就不写了,网上多的是,baidu一下,再google一下,就一大把了