GridView数据导出到Excel方法
尝试了一下Gridview导出为Excel,原本以为很简单,可是真正应用起来还是不太好弄的,呵呵,所想非所得。总结了一下应该注意下面几点:
1.由于gridview的内容可能是分页显示的,因此,这里在每次导出excel时,先将gridview的allowpaging属性设置为false,然后databind()一下,确保搂到所有数据;
2.不用单独设置导出的路径,导出时会弹出对话框让你确认保存位置;
3.要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运行时为指定的ASP.NET 服务器控件呈现HtmlForm 控件;
4.导出后别忘记再重新设置其allowpaging属性;
当我把这些都设置好以后,点击[导出],出现了 只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render(); ) 的错误,又检查代码,没发现问题啊,搞了一会弄不出来,然后搜索了一下,发现了解决办法:
1、处理为excel格式的代码
/// 导出为Excel
/// </summary>
/// <param name="control">控件</param>
/// <param name="encoding">导出格式</param>
/// <param name="filename">文件名</param>
public static void ConvertToExcel(System.Web.UI.Control control, string encoding, string filename)
{
//设置文件名格式,防止中文文件名乱码
string FileName = System.Web.HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(filename));
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Charset = "" encoding "";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
//filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc .xls .txt .htm
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" FileName);
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("" encoding "");
//Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
control.EnableViewState = false;
// 定义一个输入流
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
control.RenderControl(oHtmlTextWriter);
//this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString());
System.Web.HttpContext.Current.Response.End();
}
{
string filename = String.Format("XXXX表-{0}月.xls", DateTime.Now.Month.ToString());
ConvertToExcel(mygridview, "UTF-8", filename);
}
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
protected void gvSettlement_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
}
}
您可能感兴趣的文章:
GridView数据导出到Excel方法
ASP.NET中把Gridview内容导出到Excel示例
GridView控件事件详细解析
php框架laravel excel包使用教程介绍
php导出excel时科学计数法的处理方法
使用html导出excel时的格式问题
.net中清除EXCEL进程最有效的方法
js浏览器如何导出excel或csv文件
php导出word文档与excel表格文件
phpexcel导入excel到数据库的代码