using (SqlConnection conn = new SqlConnection(mydll.db.connStr))
{
    string sqlString = "select * from table "; / 创建一个适配器
         SqlDataAdapter adapter = new SqlDataAdapter(sqlString, conn); DataSet DS = new DataSet();
adapter.Fill(DS, "result_data");
DataGridView dataGridView1=new DataGridView();
dataGridView1.DataSource = DS.Tables[0];
....................
....................
....................
....................
}

解决方案 »

  1.   

    我原本直接拖放一个DataGridView控件,能够正常的显示数据和导出等操作,但现在我使用  DataGridView dataGridView1=new DataGridView(); 的方式,然后导出 dataGridView1的数据,却发现导出的excel 数据为空,请问DataGridView正确的创建声明方式是什么?
      

  2.   

    你创建了DataGridView以后估计还得添加到界面才行了,this.Controls.add(dataGridView1)
      

  3.   

    DataGridView  dgv = new DataGridView  ()
    DataColumn dc = new DataColumn();
    dc.DataPropertyName="数据列名";
    dgv.Columns.Add(col);
    dgv.DataSource = DS.Tables[0];
      

  4.   

    以下是我的代码,现在改为动态创建之后,导出的数据是空白的。
      using (SqlConnection conn = new SqlConnection(mydll.db.connStr))
                    {                    string sqlString = "select * from table";                        // 创建一个适配器
                            SqlDataAdapter adapter = new SqlDataAdapter(sqlString, conn);                        // 创建DataSet,用于存储数据.
                            DataSet DS = new DataSet();
                            adapter.Fill(DS, "result_data");                        DataGridView dataGridView1=new DataGridView();                        dataGridView1.DataSource = DS.Tables[0];
                            //dataGridView1.DataBindings();
                            SaveFileDialog saveFileDialog = new SaveFileDialog();
                            saveFileDialog.Filter = "Execl  files  (*.xls)|*.xls";
                            saveFileDialog.FilterIndex = 0;
                            saveFileDialog.RestoreDirectory = true;
                            saveFileDialog.CreatePrompt = true;  //提示是否创建(*****).xls文件 
                            saveFileDialog.Title = "导出Excel文件到";                        // saveFileDialog.ShowDialog(); 
                            if (saveFileDialog.ShowDialog() == DialogResult.OK)
                            {
                            
                                Stream myStream;
                                myStream = saveFileDialog.OpenFile();                            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));                            string str = "";
                                try
                                {
                                    //写标题    
                                    for (int i = 0; i < dataGridView1.ColumnCount; i++)
                                    {
                                        if (i > 0)
                                        {
                                            str += "\t";
                                        }
                                        str += dataGridView1.Columns[i].HeaderText;
                                    }                                sw.WriteLine(str);
                                    //写内容  
                                    for (int j = 0; j < dataGridView1.Rows.Count - 1; j++)
                                    {
                                        string tempStr = "";
                                        for (int k = 0; k < dataGridView1.Columns.Count; k++)
                                        {
                                            if (k > 0)
                                            {
                                                tempStr += "\t";
                                            }
                                            tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
                                        }
                                        sw.WriteLine(tempStr);
                                    }                                MessageBox.Show("导出数据成功");
                                    sw.Close();
                                    myStream.Close();                            }
                                catch (Exception ee)
                                {
                                    MessageBox.Show(ee.Message);
                                    return;
                                }
                                finally
                                {
                                    sw.Close();
                                    myStream.Close();
                                }
                            }
                            adapter.Dispose();
                            DS.Dispose();
                           
                     }
      

  5.   

    为什么不直接导出DS.Tables[0];呢?
    要跑DataGridView 上去绕一圈?很多控件没有显示的时候,是不会刷新数据的。
      

  6.   


    我最终目的就是导出到excelDS.Tables[0] 怎么直接导出到excel? 你有没有稳定好用的源代码例子,要你自己测试过可以的才行哦,不要随便粘贴一段给我 :)
      

  7.   

    如果DataTable无法满足要求,动态声明的DataGridView可以添加到界面的Controls里,楼上已经有提到了,实在不行,在设计器上放上一个DataGridVIew控件,Visuable属性设计为false
      

  8.   


    我也做过很多EXCEL导出,不过我一般用NPOI
    http://npoi.codeplex.com/releases/view/38113感觉不错,开源的,还有很多examples。控制性很强。
      

  9.   

    dataGridView1在绑定前先添加列,没有列就无法绑定数据。
    通过dataGridView1导出是把数据当做数据流输出,效率很高;直接导出datatable也是可以的,效率会比较低