怎样把DataGrid中的数据导出到Excel中?急急急!!!!!!!!!!!!!!

解决方案 »

  1.   

    protected void Button1_Click(object sender, EventArgs e)
        {
            //输出EXCEL
            StringWriter sw = new StringWriter();
            sw.WriteLine("用户名\t登录名\t登录IP\t登录时间\t登录状态(0不成功2成功)\t操作");        using (SqlConnection Conn = new SqlConnection(manageClass.strConn()))
            {
                Conn.Open();            using (SqlCommand Cmd = new SqlCommand())
                {
                    Cmd.Connection = Conn;
                    Cmd.CommandText = "绑定DATAGRID的SQL语句"
                    try
                    {
                        SqlDataReader dr = Cmd.ExecuteReader();
                        while (dr.Read())
                        {
                            sw.WriteLine(dr["username"] + "\t" + getsname(dr["userid"].ToString()) + "\t" + dr["userip"] + "\t" + dr["usertime"] + "\t" + dr["succeed"] + "\t" + dr["handle"]);                    }
                        dr.Close();
                    }
                    catch
                    {
                        Cmd.Dispose();
                        Cmd.Parameters.Clear();
                        Conn.Dispose();
                        Conn.Close();
                        Response.End();                }
                    Cmd.Dispose();
                    Cmd.Parameters.Clear();
                }
                Conn.Dispose();
                Conn.Close();
            }
            sw.Close();
            Response.AddHeader("Content-Disposition", "attachment; filename=log.xls");
            Response.ContentType = "application/ms-excel";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.Write(sw);
            Response.End();
        }
      

  2.   

    转贴。
    #region 用于将一个DATAGRID导出到EXCEL文件中,可含模板列.
      /// <summary>
      /// 用于将一个DATAGRID导出到EXCEL文件中,可含模板列.模板列中可含文本框、列表框等其他控件,
      /// </summary>
      /// <param name="dg"></param>
      /// <param name="Response"></param>
      /// <returns></returns>
      public static string GridToExcel_Rich(DataGrid dg, System.Web.HttpResponse Response)
      {
       try
       {
        DataGrid dgTemp = new DataGrid();
        DataTable dt = new DataTable();
        DataRow dr;
        Response.Clear();
        //用dg生成一个DataTable dt;
        int i, j, nColCount = dg.Columns.Count;
        for(i=0; i<nColCount; i++)
         //在这里用visible属性就不可以了,无法生成表,不知为什么.表结构可以生成,但下面的加入行操作不行.
         //if (dg.Columns[i].Visible)
         {
          dt.Columns.Add(dg.Columns[i].HeaderText);
         }
        for(j=0; j<dg.Items.Count; j++)
        {
         dr = dt.NewRow();
         
         for(i=0; i<nColCount; i++)
          //这里用visible没影响.
          //if (dg.Columns[i].Visible)
          {
           if(dg.Columns[i] is System.Web.UI.WebControls.TemplateColumn)
           {
            //要增加对其他控件的支持可修改这里。
            if (dg.Items[j].Cells[i].Controls[1] is System.Web.UI.WebControls.TextBox)
             dr[i] = ((System.Web.UI.WebControls.TextBox)dg.Items[j].Cells[i].Controls[1]).Text;
            else if (dg.Items[j].Cells[i].Controls[1] is System.Web.UI.WebControls.Label)
             dr[i] = ((System.Web.UI.WebControls.Label)dg.Items[j].Cells[i].Controls[1]).Text;
            else if (dg.Items[j].Cells[i].Controls[1] is System.Web.UI.WebControls.DropDownList)
             dr[i] = ((System.Web.UI.WebControls.DropDownList)dg.Items[j].Cells[i].Controls[1]).SelectedItem.Text;
           }
           else if (dg.Columns[i] is System.Web.UI.WebControls.BoundColumn)
            dr[i] = dg.Items[j].Cells[i].Text;
          }
         dt.Rows.Add(dr);
        }
        //只能先全部生成,再删除visible为false的列了.
        for(i=0; i<nColCount; i++)
         if(!dg.Columns[i].Visible)
          dt.Columns.Remove(dt.Columns[i].ColumnName);
        dgTemp.DataSource = dt.DefaultView;
        dgTemp.DataBind();
        
        //输出
            
        Response.Buffer = true;
        Response.Charset="GB2312";    
        Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"); 
        Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
        Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
           
        System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        dgTemp.RenderControl(oHtmlTextWriter); 
        Response.Write(oStringWriter.ToString());
        Response.End();
         return "";
       }
       catch(Exception ex)
       {
        return ex.Message;
       }
      }
      #endregion
      

  3.   

    this.Datagrid1.DataSource=DV;
    this.Datagrid1.DataBind();
    string FileName="查询结果.xls"; Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).Replace("+"," "));
    Response.Charset = "GB2312"; 
    Response.ContentEncoding=System.Text.Encoding.UTF8;
    Response.ContentType = "application/vnd.ms-excel"; 
    this.EnableViewState= true; 
    System.IO.StringWriter tw = new System.IO.StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(tw); 
    Datagrid1.RenderControl(hw); 
    Response.Write(tw.ToString()); 
    Response.End();