参数为DataGrid的ID
public void ToExcel(System.Web.UI.Control ctl)

{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
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();
}
---以上适合"自动生成列"的DataGrid. ()
对于DataGrid的模板列,除了上面代码外,还要加些东西.
完整代码:
private static void ClearControls(Control control)

{
for (int i=control.Controls.Count -1; i>=0; i--)

{
ClearControls(control.Controls[i]);
}

if (!(control is TableCell))

{
if (control.GetType().GetProperty("SelectedItem") != null)

{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
try

{
literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
}
catch

{
}
control.Parent.Controls.Remove(control);
}
else
if (control.GetType().GetProperty("Text") != null)

{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
control.Parent.Controls.Remove(control);
}
}
return;
}
public static void OutPutExcel(DataGrid dgrd, string v_FileName)

{
try

{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+v_FileName+".xls");
HttpContext.Current.Response.Charset ="gb2312";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
dgrd.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ClearControls(dgrd);
dgrd.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
catch(Exception e)

{
throw e;
}
}
文章来源于 http://www.cnblogs.com/zhangzs8896 版权归原作者所有















---以上适合"自动生成列"的DataGrid. ()
对于DataGrid的模板列,除了上面代码外,还要加些东西.
完整代码:












































































文章来源于 http://www.cnblogs.com/zhangzs8896 版权归原作者所有