日期:2014-05-17 浏览次数:21105 次
   /// <summary>  
    /// 解析Excel,根据OleDbConnection直接连Excel  
    /// </summary>  
    /// <param name="filePath"></param>  
    /// <param name="name"></param>  
    /// <returns></returns>  
    public static DataSet LoadDataFromExcel(string filePath, string name)  
    {  
      try  
      {  
        string strConn;  
        //  strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=Excel 8.0";  
        strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=No\"";  
       OleDbConnection OleConn = new OleDbConnection(strConn);  
        OleConn.Open();  
        string sql = "SELECT * FROM [" + name + "$]";//可是更改Sheet名称,比如sheet2,等等   
        OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);  
        DataSet OleDsExcle = new DataSet();  
        OleDaExcel.Fill(OleDsExcle, name);  
        OleConn.Close();  
        return OleDsExcle;  
      }  
      catch (Exception err)  
      {  
        MessageBox.Show("数据绑定Excel失败! 失败原因:" + err.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);  
        return null;  
      }  
    }
------解决方案--------------------
 private void button1_Click(object sender, EventArgs e)
        {
            //调用自定义函数ExportDataGridview
            ExportDataGridview(dataGridView1, true);  
        }
        public bool ExportDataGridview(DataGridView dgv, bool isShowExcle)
        {
            if (dgv.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 < dgv.ColumnCount; i++)
            {
              excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
            }
            //填充数据
            for (int i = 0; i < dgv.RowCount - 1; i++)
            {
                for (int j = 0; j < dgv.ColumnCount; j++)
                {
                    if (dgv[j, i].ValueType == typeof(string))
                    {
                       excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
                    }
                    else
                    {
                        excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
                    }
                }
            }
            return true;
        }