环境是vs2010,sql用的2005    
1.gridview已经绑定了数据库的数据并且显示出来,但是我想在gridview上面加一个导出button按钮,按了可以导出到EXCEL 2.gridview控件已经绑定数据....  然后我还想了一种方法就是, 使用reportviewr控件  把gridview控件的信息以传值的方式 传到reporviews控件上去,然后进行导出
                                                   注:reporviews控件本身就是一个比较死板的导出控件。 需求上必须要求,数据必须在gridview上面!           希望大家能够帮帮我,谢谢大家。!

解决方案 »

  1.   

    datatable导出excel的方法 
    private void ExportExcel(DataView dv)
            {
                SaveFileDialog saveFile = new SaveFileDialog();
                saveFile.Filter = "Excel files(*.xls)|*.xls";
                saveFile.FilterIndex = 0;
                saveFile.RestoreDirectory = true;
                saveFile.CreatePrompt = true;
                saveFile.Title = "导出Excel文件到";
                DateTime now = DateTime.Now;
                saveFile.FileName = now.ToShortDateString();
                saveFile.ShowDialog();            Stream myStream;
                myStream = saveFile.OpenFile();
                StreamWriter sw = new StreamWriter(myStream, Encoding.GetEncoding("gb2312"));
                string str = " ";
                //写标题
                for(int i = 0 ;i<dv.Table.Columns.Count;i++)
                {
                    if(i>0)
                    {
                        str += "\t";
                    }
                    str += dv.Table.Columns[i].ColumnName;
                }
                sw.Write(str);
                //写内容
                for(int rowNo =0;rowNo<dv.Count;rowNo++)
                {
                    string tempstr = " ";
                    for(int columnNo =0;columnNo<dv.Table.Columns.Count;columnNo++)
                    {
                        if(columnNo>0)
                        {
                            tempstr += "\t";
                        }
                        tempstr += dv.Table.Rows[rowNo][columnNo].ToString();
                    }
                    sw.WriteLine(tempstr);
                }        
                sw.Close();
                myStream.Close();
            }        private void simpleButton1_Click(object sender, EventArgs e)
            {
                DataView dataView = new DataView();
                dataView.Table = _dtHistoryPoints;
                ExportExcel(dataView);
            }
    我是菜鸟,第二个没看懂是什么
      

  2.   

    呵呵,我也是菜鸟,问题在与,前台的那个BUTTON按钮怎么写呢?  谢谢给的方法。
      

  3.   

    button 下面就是这样的啊
    private void simpleButton1_Click(object sender, EventArgs e)
      {
      DataView dataView = new DataView();
      dataView.Table = _dtHistoryPoints;
      ExportExcel(dataView);
      }
     定义一个全局变量Datatable(代码中的_dtHistoryPoints)跟gridview的DataSource一致我发的这例子是winform里面的 web应该也差不多吧
      

  4.   

    差多了- -。我给你看看我的列子,但是报错了。。
    后台:
       protected void GridvivwDC_Click(object sender, EventArgs e)//excel导出
        {
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
            //gaoyang [10/21/2006] 经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
            Response.ContentEncoding = System.Text.Encoding.UTF7;        //设置输出文件类型为excel文件
            Response.ContentType = "application/ms-excel";
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            this.GridView1.RenderControl(oHtmlTextWriter);
            Response.Output.Write(oStringWriter.ToString());
            Response.Flush();
            Response.End();
        }    public override void VerifyRenderingInServerForm(Control control)//重载
        {
            base.VerifyRenderingInServerForm(control);
        }前台:<asp:Button ID="GridvivwDC" runat="server" Text="导出" onclick="GridvivwDC_Click" 
                    style="height: 21px" />这个是我写的,但是报错了...
    只能在执行 Render() 的过程中调用 RegisterForEventValidation; 行 249:        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    行 250:        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    行 251:        this.GridView1.RenderControl(oHtmlTextWriter);行 252:        Response.Output.Write(oStringWriter.ToString());
    行 253:        Response.Flush();