DataGrid 转 Excel (asp.net)

None.gif Response.Clear();
None.gif   Response.AddHeader(
" content-disposition " " attachment;filename=FileName.xls " );
None.gif   Response.Charset 
=   "" ;
None.gif   Response.Cache.SetCacheability(HttpCacheability.NoCache);
None.gif   Response.ContentType 
=   " application/vnd.xls " ;
None.gif   System.IO.StringWriter stringWrite 
=   new  System.IO.StringWriter();
None.gif   System.Web.UI.HtmlTextWriter htmlWrite 
=   new  HtmlTextWriter(stringWrite);
None.gif   
this .WebCustomControl12.RenderControl(htmlWrite);
None.gif   Response.Write(stringWrite.ToString());
None.gif   Response.End();
 
  好像是直接把控件转到html然后再输出到Excel,不仅仅是dataGrid哦。
 把this.WebCustomControl12换成this.datagrid1即可。
 若是转到word里面,将ContentType="application/word.doc";
超强。老外写的。

 新的: 
         
None.gif < script runat = " server " >
None.gif
None.gif    
protected   void  GridToExcel(GridView GridView1, String filename,System.Data.DataSet ds)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        Response.Clear();
InBlock.gif        Response.AddHeader(
"content-disposition""attachment;filename="+filename+".xls");
InBlock.gif        Response.Charset 
= "utf-8";
InBlock.gif        Response.ContentType 
= "application/vnd.xls";
InBlock.gif        System.IO.StringWriter stringWrite 
= new System.IO.StringWriter();
InBlock.gif        System.Web.UI.HtmlTextWriter htmlWrite 
= new HtmlTextWriter(stringWrite);
InBlock.gif
InBlock.gif        GridView1.ShowHeader 
= false;
InBlock.gif        GridView1.AllowPaging
= false;
InBlock.gif        GridView1.DataSource 
= ds;
InBlock.gif        GridView1.DataBind();
InBlock.gif        GridView1.RenderControl(htmlWrite);
InBlock.gif
InBlock.gif        Response.Write(stringWrite.ToString());
InBlock.gif        Response.End();
InBlock.gif        GridView1.AllowPaging 
= true;
InBlock.gif        GridView1.DataSource 
= ds;
InBlock.gif        GridView1.DataBind();
InBlock.gif 
ExpandedBlockEnd.gif    }

None.gif    
protected   void  GridToExcel(GridView GridView1, String filename, System.Data.DataSet ds,Boolean DisableControl)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        DisableControls(GridView1);
InBlock.gif        Response.Clear();
InBlock.gif        Response.AddHeader(
"content-disposition""attachment;filename=" + filename + ".xls");
InBlock.gif        Response.Charset 
= "utf-8";
InBlock.gif        Response.ContentType 
= "application/vnd.xls";
InBlock.gif        System.IO.StringWriter stringWrite 
= new System.IO.StringWriter();
InBlock.gif        System.Web.UI.HtmlTextWriter htmlWrite 
= new HtmlTextWriter(stringWrite);
InBlock.gif
InBlock.gif        GridView1.ShowHeader 
= false;
InBlock.gif        GridView1.AllowPaging 
= false;
InBlock.gif        GridView1.DataSource 
= ds;
InBlock.gif        GridView1.DataBind();
InBlock.gif        GridView1.RenderControl(htmlWrite);
InBlock.gif
InBlock.gif        Response.Write(stringWrite.ToString());
InBlock.gif        Response.End();
InBlock.gif        GridView1.AllowPaging 
= true;
InBlock.gif        GridView1.DataSource 
= ds;
InBlock.gif        GridView1.DataBind();
InBlock.gif
ExpandedBlockEnd.gif    }

None.gif    
public   override   void  VerifyRenderingInServerForm(Control control)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
//base.VerifyRenderingInServerForm(control);
ExpandedBlockEnd.gif
    }

None.gif    
protected   void  DisableControls(Control control1)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        LinkButton lb 
= new LinkButton();
InBlock.gif        Literal l 
= new Literal();
InBlock.gif        
for (int i = 0; i < control1.Controls.Count; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (control1.Controls[i].GetType() == typeof(LinkButton))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                l.Text 
= (control1.Controls[i] as LinkButton).Text;
InBlock.gif                control1.Controls.Remove(control1.Controls[i]);
InBlock.gif                control1.Controls.AddAt(i, l);
ExpandedSubBlockEnd.gif            }

InBlock.gif            
if (control1.Controls[i].HasControls())
InBlock.gif                DisableControls(control1.Controls[i]);
//递归,检查子控件下是否还有子控件。
ExpandedSubBlockEnd.gif
        }

ExpandedBlockEnd.gif    }

None.gif    
protected   void  LinkButton_Command(Object sender, CommandEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        GridView GridView1 
= new GridView();
InBlock.gif        GridView1.Caption 
= (String)Session["DataHeader"];
InBlock.gif        System.Data.DataSet ds1 
= Session["DataSet"as System.Data.DataSet;
InBlock.gif        
switch (e.CommandName)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
case "ToExcelNone":
InBlock.gif                GridToExcel(GridView1, TextBox1.Text, ds1, 
true);
InBlock.gif                
break;
InBlock.gif            
case "ToExcel":
InBlock.gif                GridToExcel(GridView1, TextBox1.Text, ds1);
InBlock.gif                
break;
ExpandedSubBlockEnd.gif        }

InBlock.gif        Session.Remove(
"DataSet");
InBlock.gif        Session.Remove(
"DataHeader");
ExpandedBlockEnd.gif    }

None.gif
None.gif
</ script >

转载于:https://www.cnblogs.com/bluetooth/archive/2006/02/28/339436.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值