DataGird导出EXCEL的几个方法

本文介绍了一种将ASP.NET DataGrid控件中的数据导出到Excel文件的方法。提供了三种不同的实现方式,包括直接导出DataGrid的内容、使用DataSet作为中间数据源进行导出以及通过DataTable来完成导出操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 DataGird导出EXCEL的几个方法(WebControl)
                                      

using System;
using System.Data;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;


namespace DataGirdtoExcel
{
 /// <summary>
 /// DataGirdtoExcel 的摘要说明。
 /// 作者:林孔杰
 /// 日期:2008-12-5
 /// 功能:DataGird导出EXCEL
 /// 描述:
 /// </summary>
 public class DataGirdtoExcel
 {
  public DataGirdtoExcel()
  {
           
  }


  /// <summary>
  /// 将DATAGRID导出为EXCEL文件方法一,
  /// 参数是:要导出的DATAGRID的ID和要保存下来的EXCEL文件名
  /// </summary>
  /// <param name="myPage">page</param>
  /// <param name="objdatagrid">datagrid</param>
  /// <param name="name">filename</param>  
  private void OutExcel(Page myPage,DataGrid objdatagrid,string name)
  {
   HttpResponse Response; 
   Response=myPage.Response; 

   string name1="attachment;filename="+name+".xls"; 
   objdatagrid.Visible=true;
   Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";
  
   Response.AppendHeader("Content-Disposition",name1);  

   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");  
   Response.ContentType ="application/ms-excel";

   objdatagrid.EnableViewState = false;
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   objdatagrid.RenderControl(oHtmlTextWriter);
   Response.Write(oStringWriter.ToString());
   Response.End();
  }


  /// <summary>
  /// 将DATAGRID导出为EXCEL文件方法二,
  /// 参数是:要导出的DATAGRID的ID和要保存下来的EXCEL文件名
  /// </summary>
  /// <param name="myPage">page</param>
  /// <param name="ctl">datagrid</param>
  /// <param name="filename">filename</param>
  public void ExportToExcel(Page myPage,DataGrid objctl,string filename)
  {
   HttpResponse Response; 
   Response=myPage.Response;

   bool CurrCtlVisible=objctl.Visible;
   ctl.Visible=true;       
   Response.AppendHeader("Content-Disposition","attachment;filename="+filename+".xls"); 
   Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
   Response.ContentType = "application/ms-excel";
   objctl.Page.EnableViewState = false;
   System.IO.StringWriter tw = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
   objctl.RenderControl(hw);
   Response.Write(tw.ToString());
   Response.End();
           
   objctl.Page.EnableViewState = true;
   objctl.Visible=CurrCtlVisible;
  }

  private void DataGridOutExcel(Page myPage,DataGrid objdatagrid,string name)
  {
   HttpResponse Response; 
   Response=myPage.Response; 

   string name1="attachment;filename="+name+".xls"; 
   objdatagrid.Visible=true;
   Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";
  
   Response.AppendHeader("Content-Disposition",name1);  

   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");  
   Response.ContentType ="application/ms-excel";

   objdatagrid.EnableViewState = false;
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   objdatagrid.RenderControl(oHtmlTextWriter);
   Response.Write(oStringWriter.ToString());
   Response.End();
  }


  #region   导出EXCEL,用DATASET

  public string myExportString(DataGrid objdatagrid,DataSet ds)
  {
   string  HTstring="<table><tr>";
   string Fieldstring="";
   ArrayList myArray=new ArrayList();
   string sRows="<tr>";
   for(int i=0;i<DG.Columns.Count;i++)
   {
    HTstring+="<td>"+objdatagrid.Columns[i].HeaderText+"</td>";
    Fieldstring+="<td>"+((System.Web.UI.WebControls.BoundColumn)(objdatagrid.Columns[i])).DataField+"</td>";
    myArray.Add(((System.Web.UI.WebControls.BoundColumn)(objdatagrid.Columns[i])).DataField); 
   }
                
   for(int k=0;k<ds.Tables[0].Rows.Count;k++)
   {
    foreach(string field in myArray)
    {  
     sRows+= "<td>"+ds.Tables[0].Rows[k][field]+"</td>";
    }
    sRows+="</tr>";
   }      
   HTstring+="</tr>"+sRows+"</table>";

   return  HTstring;
  }


  public void SaveToExcel(Page myPage, string myExportString,string myFileName)
  {     
   HttpResponse resp;      
   resp=myPage.Response;
   resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   resp.AppendHeader("Content-Disposition","attachment;filename="+myFileName+".xls");
   resp.ContentType="application/ms-excel";                                                         
   resp.Write(myExportString); 
   resp.End();
   //resp.Clear();
   //resp.Close();    
  }


  public void Export(DataGrid objdatagrid,DataTable objdatatable,HttpResponse response)
  {
   // clean up response object
   response.Clear();
   response.Charset = "";
   response.Charset = "UTF-8";
   //   response.ContentEncoding = System.Text.Encoding.Default;
   response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
   // set response object's mime type
   //   response.ContentType = "application/vnd.ms-excel";
   response.AppendHeader("Content-Disposition","attachment;filename=mytest.xls");
   System.IO.StringWriter sw = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

   DataGrid objDg = new DataGrid();
   objDg.AllowPaging = false;
   objDg.AllowSorting = false;

   ArrayList myArray=new ArrayList();
   for(int i=0;i<myDG.Columns.Count;i++)
   { 
    // objDg.Columns.AddAt(i,objdatagrid.Columns[i]);
    // objDg.Columns[i].HeaderText=objdatagrid.Columns[i].HeaderText;  
    myArray.Add(((System.Web.UI.WebControls.BoundColumn)(objdatagrid.Columns[i])).DataField);

    for(int k=0;k<objdatatable.Columns.Count;k++)
    {
     foreach(string field in myArray)
     {
      if(objdatatable.Columns[i].ColumnName==field)
      {
       objdatatable.Columns[i].ColumnName=objdatagrid.Columns[i].HeaderText;
      }
     }
    }      
   } 
   objDg.DataSource = objdatatable;
   objDg.ShowHeader = true;
   objDg.HeaderStyle.BackColor = System.Drawing.Color.DarkGray;
   objDg.HeaderStyle.ForeColor = System.Drawing.Color.White;
   objDg.HeaderStyle.Font.Bold = true;
   objDg.AlternatingItemStyle.BackColor = System.Drawing.Color.LightGray; 
   objDg.DataBind(); 

   objDg.RenderControl(htw);                                       
   response.Write(sw.ToString());
   response.End();
  }

  #endregion


 }
}

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值