把DataSet 绑定到DataGrid
然后用:
public static void ToExcel(System.Web.UI.Control ctl)  
{
// HttpContext.Current.Response.Charset ="GB2312";
HttpContext.Current.Response.Charset ="";
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=temp.xls");

HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.GetEncoding("GB2312");  HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
ctl.Page.EnableViewState =false;
System.IO.StringWriter  tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();

}

解决方案 »

  1.   

    导出excel文件的方法有多钟,
    对于规则格式的excel95以上工作簿可以把它作为数据源用ado.net进行插入数据的操作,
    例子见blog.csdn.net/eddie005;直接调用excel类库写单元格也可以,但是速度比较让人受不了;第三方控见也是个不错的选择,例如www.farpoint.com
      

  2.   

    至于楼上 fupip(小贝) 的方法,是在webform下常用的方法
      

  3.   

    http://blog.csdn.net/gztoby/archive/2004/09/18/109028.aspx
      

  4.   

    建议你按照自己想要的格式写csv文件,这样灵活性最大,想写成什么样都可以。
      

  5.   

    private void excel_btn_Click(object sender, System.EventArgs e)
    {
    Response.Clear(); 
    Response.Buffer= true; 
    Response.Charset="GB2312";
    string str =star_text.Text.Trim()+"--"+end_text.Text.Trim(); //设置文件名
    Response.AppendHeader("Content-Disposition","attachment;filename="+str+".xls"); 
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
    Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
    this.EnableViewState = false;    
    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);
    MyDataGrid.RenderControl(oHtmlTextWriter); 
    Response.Write(oStringWriter.ToString());
    Response.End();
    }
      

  6.   

    本示例是用于将ListView中的内容倒入到Excel,与常用的逐单元格写不同的是,本例子采用数据写入到range的方法。该方法效率明显较高。   Excel.Application app = new Excel.ApplicationClass();
      if( app == null)
      {
      MessageBox.Show("Excel无法启动");
      return;
      }
      app.Visible = true;
      Excel.Workbooks wbs = app.Workbooks;
      Excel.Workbook wb = wbs.Add(Missing.Value);
      Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
      Excel.Range r = ws.get_Range("A1","H1");
      object [] objHeader = {"标题1","标题2","标题3",
      "标题4","标题5","标题6",
      "标题7","标题8"};
      r.Value = objHeader;
      if (lv.Items.Count >0)
      {
      r = ws.get_Range("A2",Missing.Value);  
      object [,] objData = new Object[this.lv.Items.Count,8];
      foreach(ListViewItem lvi in lv.Items)
      {
      objData[lvi.Index,0] = lvi.Text;
      objData[lvi.Index,1] = lvi.SubItems[1].Text;
      objData[lvi.Index,2] = lvi.SubItems[2].Text;
      objData[lvi.Index,3] = lvi.SubItems[3].Text;
      objData[lvi.Index,4] = lvi.SubItems[4].Text;
      objData[lvi.Index,5] = lvi.SubItems[5].Text;
      objData[lvi.Index,6] = lvi.SubItems[6].Text;
      objData[lvi.Index,7] = lvi.SubItems[7].Text;
      }
      r = r.get_Resize(lv.Items.Count,8);
      r.Value = objData;
      r.EntireColumn.AutoFit(); 
      }
      app = null;