/// <summary>
/// 导出excel
/// </summary>
public void ExportExcel(GridView gv)
{
Response.Buffer = true;
Response.Charset = "GB2312";
string fileName = "Chargeback.xls";
Response.ClearContent();
Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=GB2312\">");//避免导出excel中出现乱码
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
ClearControls(gv);//清除控件中所有控件
gv.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
/// <summary>
/// GridView如果需要实现导出Excel功能,则该函数需要重
/// </summary>
/// <param name="control"></param>
public override void VerifyRenderingInServerForm(Control control) { }
/// <summary>
/// 清除控件中的所有控件,以便导出Excel
/// </summary>
/// <param name="control"></param>
private 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;
}