protected void Button2_Click(object sender, EventArgs e)
{
GridViewToExcel();
}
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
private void GridViewToExcel()
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
gvMenus.RenderControl(oHtmlTextWriter);
//gvDishes.RenderControl(oHtmlTextWriter);
//gvExtrol.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
}
菜编号 菜名(中文) 操作
这样做后 我导出的EXCEL包括操作(删除,编辑) 如何能把操作去掉 只留下查询出来的数据 谢谢
有比较完整的代码更好
{
GridViewToExcel();
}
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
private void GridViewToExcel()
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
gvMenus.RenderControl(oHtmlTextWriter);
//gvDishes.RenderControl(oHtmlTextWriter);
//gvExtrol.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
}
菜编号 菜名(中文) 操作
这样做后 我导出的EXCEL包括操作(删除,编辑) 如何能把操作去掉 只留下查询出来的数据 谢谢
有比较完整的代码更好
/// GridView导出到Excel
/// </summary>
/// <param name="exportTargetGridView">目标GridView</param>
/// <param name="filename">文件名称</param>
public static void ExportExcel(GridView exportTargetGridView, string filename)
{
HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.Charset = "GB2312"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF7; HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlPathEncode(filename + ".xls")); HttpContext.Current.Response.ContentType = "application/excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); PrepareGridViewForExport(exportTargetGridView);//调用模式化特殊元素 exportTargetGridView.RenderControl(htw); HttpContext.Current.Response.Write(sw.ToString()); HttpContext.Current.Response.End();
}
/// <summary>
/// 使用GridView导出excel表格,对特殊的控件进行模式化处理
/// </summary>
/// <param name="gv">模式化特殊元素的函数 </param>
public static void PrepareGridViewForExport(Control gv)
{ HyperLink lb = new HyperLink();
LinkButton bt = new LinkButton();
Literal l = new Literal();
string name = String.Empty;
RadioButton rb = new RadioButton(); for (int i = 0; i < gv.Controls.Count; i++)
{
if (gv.Controls[i].GetType() == typeof(HyperLink))
{
l.Text = (gv.Controls[i] as HyperLink).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l); }
else if (gv.Controls[i].GetType() == typeof(LinkButton))//替换
{ l.Text = (gv.Controls[i] as LinkButton).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l); }
else if (gv.Controls[i].GetType() == typeof(DropDownList))
{ DropDownList dl = gv.Controls[i] as DropDownList;
for (int j = 0; j < dl.Items.Count; j++)
{
rb.Text = dl.Items[j].Text;
if (rb.Text == dl.SelectedItem.Text)
rb.Checked = true;
gv.Controls.AddAt(i, rb);
}
gv.Controls.Remove(dl); //移除DropDownlist }
else if (gv.Controls[i].GetType() == typeof(CheckBox))
{ l.Text = (gv.Controls[i] as CheckBox).Checked ? "" : "";
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l); }
else if (gv.Controls[i].GetType() == typeof(ImageButton))
{
l.Text = "图片";
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].HasControls())
{
PrepareGridViewForExport(gv.Controls[i]);
} } }
上面添加
oStringWriter.Replace("删除", "").Replace("编辑", "");
linkbutton可以换成span.
在至于那一列,不太好去。
当然想去掉你也可以用string.Remove(),用IndexOf()算好长度和位置。
隐藏列再显示
protected void Btn(object sender, EventArgs e)
{
string style = @"<style> .text { mso-number-format:\@; } </script> ";
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=ExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Write(style);
Response.Write(sw.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{}
绝对好用.这样导出的时候就不导出对后一列了..