GridView导出问题,寻求更优方法

问题描述

gridview格式:1.多行表头2.带AspNetPager分页3.其中一列为超链接.如果gridview中不带超链接时,我用如下方法可以导出成功。publicstaticstringGridViewToExcel(GridViewgv){returnGridViewToExcel(gv,null);}///<summary>///GridView导出Excel文件///</summary>///<paramname="gv">GridView</param>///<paramname="file">文件名</param>///<returns></returns>publicstaticstringGridViewToExcel(GridViewgv,stringfile){stringfileName="";if(string.IsNullOrEmpty(file)){fileName=DateTime.Now.ToString("yyyyMMddHHmmss")+".xls";//文件名}else{fileName=file+".xls";}fileName=fileName.Replace('(','(').Replace(')',')').Replace("/","");//Pagepage=newPage();HtmlFormform=newHtmlForm();gv.EnableViewState=false;gv.AllowPaging=false;page.EnableEventValidation=false;page.DesignerInitialize();page.Controls.Add(form);DisableControls(gv);form.Controls.Add(gv);HttpContext.Current.Response.Clear();HttpContext.Current.Response.Buffer=true;HttpContext.Current.Response.HeaderEncoding=System.Text.Encoding.GetEncoding("GB2312");//HttpContext.Current.Response.AddHeader("content-disposition","attachment;filename="+fileName);HttpContext.Current.Response.Charset="utf-8";//HttpContext.Current.Response.Charset="GB2312";HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");//HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.UTF7;//HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");HttpContext.Current.Response.ContentType="application/excel";StringBuildersb=newStringBuilder();System.IO.StringWriterstringWrite=newSystem.IO.StringWriter(sb);System.Web.UI.HtmlTextWriterhtmlWrite=newSystem.Web.UI.HtmlTextWriter(stringWrite);page.RenderControl(htmlWrite);HttpContext.Current.Response.Write(stringWrite.ToString());HttpContext.Current.Response.Flush();HttpContext.Current.Response.Clear();HttpContext.Current.Response.End();returnfileName;}但是如果gridview中带超链接,则导出的数据不完整。有没有那种方法可以实现导出后表头任然为多行,并且在又分页时数据导出完整?

解决方案

解决方案二:
stringfilename="值班表"+DateTime.Now.ToString("yyyyMMdd")+".xls";stringstyle=@"<style>.text{mso-number-format:/@;}</script>";//解决第一位字符为零时不显示的问题stringxlsHeader=@"<htmlxmlns:x=urn:schemas-microsoft-com:office:excel>";xlsHeader+="<head>";xlsHeader+="<!--[ifgtemso9]>";xlsHeader+="<xml>";xlsHeader+="<x:ExcelWorkbook>";xlsHeader+="<x:ExcelWorksheets>";xlsHeader+="<x:ExcelWorksheet>";xlsHeader+="<x:Name>ExportData</x:Name>";xlsHeader+="<x:WorksheetOptions>";xlsHeader+="<x:Selected/>";xlsHeader+="</x:WorksheetOptions>";xlsHeader+="</x:ExcelWorksheet>";xlsHeader+="</x:ExcelWorksheets>";xlsHeader+="</x:ExcelWorkbook>";xlsHeader+="</xml>";xlsHeader+="<![endif]-->";xlsHeader+="</head>";filename=HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8);//解决导出EXCEL时乱码的问题Response.ClearContent();Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");Response.ContentType="application/excel";Response.AppendHeader("Content-Disposition","attachment;filename="+filename);StringWritersw=newStringWriter();HtmlTextWriterhtw=newHtmlTextWriter(sw);Response.Write(xlsHeader);div_GV.RenderControl(htw);Response.Write(style);Response.Write(sw.ToString());Response.End();this.DutyGrid.AllowPaging=true;
解决方案三:
这个方法很简单,不知道合不合你胃口

时间: 2024-10-30 08:53:12

GridView导出问题,寻求更优方法的相关文章

java 关于在多态里用循环判断调用枚举类型,在枚举类型数量多的情况下我想寻求更简便的处理方式

问题描述 java 关于在多态里用循环判断调用枚举类型,在枚举类型数量多的情况下我想寻求更简便的处理方式 //enum GetWheels.java public enum GetWheels{ ONE_WHEEL,TWO_WHEELS,THREE_WHEELS; } //Cycle.java class Cycle{ public void wheel(GetWheels g){ System.out.println("Cycle.wheel() "+g); } } //RideCy

ASP.NET使用GridView导出Excel实现方法_实用技巧

本文实例讲述了ASP.NET使用GridView导出Excel实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /// <summary>  /// 将DataTable数据导出到EXCEL,调用该方法后自动返回可下载的文件流  /// </summary>  /// <param name="dtData">要导出的数据源</param>  public static void DataTable1Excel(S

Asp.net中的GridView导出遇到的两个问题和解决方法_实用技巧

对于GridView导出的内容的代码大致如下: Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); Response.ContentEncoding = Sys

灵活掌握asp.net中gridview控件的多种使用方法(下)_实用技巧

继续上篇文章的学习<灵活掌握asp.net中gridview控件的多种使用方法(上)>,在此基础上巩固gridview控件的操作使用,更上一层楼. 11.GridView实现用"..."代替超长字符串:效果图:   解决方法:数据绑定后过滤每一行即可 for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { DataRowView mydrv; string gIntro; if (GridView1.PageInde

ASP.NET2.0中将GridView导出到Excel文件中

下面代码实现将 GridView 导出到 Excel文件中. 值得注意的是VerifyRenderingInServerForm重载方法: MSDN上的 VerifyRenderingInServerForm 方法的描述: 必须位于 <form runat=server> 标记中的控件可以在呈现之前调用此方法,以便在控件被置于标记外时显示错误信息.发送回或依赖于注册的脚本块的控件应该在 Control.Render 方法的重写中调用此方法.呈现服务器窗体元素的方式不同的页可以重写此方法以在不同

寻求更好的体验:登陆时不用输入用户名和密码

网页制作Webjx文章简介:如何实现不需要密码登录的网站? 好像现在我们上网的第一件事就是输入用户名和密码.在用户名逐渐统一到电邮后,稍微方便了点.然而,还是很有些老顽固的网站,比如百度,不支持用电邮登录:这样直接导致我们的用户名不能重复,难听,且以后不能更改. 注册一个网站总是有很多原因,而根源只有一个:建立可持续跟踪的联系.比如发布内容,加好友或者网上交易.除此之外,无论是阅读,还是作为过客留言,我们都更希望能不注册就不注册,一切求简.为了尽可能减少注册带给用户的麻烦,现在注册的门槛也"每况

网页设计中图标描述的最优方法

很多人说设计是力求细节的,在网页设计里表达出的细节就是图标.图标在一个设计里带来了额外的注解并且使设计里的对象和元素引起用户的注意. 请观看网页教学网发布的Photoshop教程:创建有创新力的网站导航 以下介绍的是一个用图标描述的最优方法.当使用图标时,图标的描述包含了一系列的隐喻.这也是在网站导航广泛使用图标和一系列图标组的原因. 隐喻: 图标是文字的隐喻,也让人很好地知道隐喻,对于可用性来说,在网站之间有效地进行交流是至关重要的,图标应该是代替文字,最能充分传送信息.用户需要快速地知道图标

C#使用oledb导出数据到excel的方法_C#教程

本文实例讲述了C#使用oledb导出数据到excel的方法.分享给大家供大家参考,具体如下: 现在做应用的一半都会碰到数据导出的问题,导出到word阿,导出到excel啊,还有其他的什么.当然导出的类型中还是以ms office的居多.最近在做数据的转换,也碰到这个导出的问题,当然幸运的是不用碰word,这样涉及到就只有xml,csv,tsv和最"痛苦"的excel了. 最开始的想法是xml+xslt,搞定全部,但是有一个问题就是excel只有在xp版本之后支持xml,我不能强制的要求

有谁做个gridview 导出到Excel文件.

问题描述 有谁做个gridview导出到Excel文件.必须导出到officeexcel2007中,请大侠们给个例子参考参考!谢谢! 解决方案 解决方案二:usingSystem.IO;usingSystem.Text;//页面增加一个按钮,单击事件添加如下方法:protectedvoidButton1_Click(objectsender,EventArgse){Export("application/ms-excel","学生成绩报表.xls");}privat