Gridview 分多页时导出excel的解决方案
在开发会遇到将gridview中的数据导入到excel 这样的需求,当girdview有多页数据时按照一般的方式导出的数据只可能是当前页的数据,后几页的数据还在数据库内,没有呈现到页面上,传统的方式是将标记字符和文本写入到 ASP.NET 服务器控件输出流,没有呈现的页面不可能输出到excel中。下面提供一种解决方式将所以数据都能导入到excel中。
第一步:记录查询条件,当用户点击下载的时候以相同的条件查询,呈现到datatable
这一步没有固定的代码,可以在用户查询的时候用ViewState记录查询条件,例如
OrderMng.OrderList_GetSupOrderList_BindData( Param, fDynamicParam, PageParamByCus, dystr);(查询出单页的数据绑定到girdview)
ViewState["GParam"] = Param; ViewState["DPaRam"] = fDynamicParam; ViewState["PageParam"] = PageParamByCus; ViewState["strparam"] = dystr;(记录查询条件)
用户点下载的时候再以相同的条件,查询出所有数据到datatable
Hashtable GParam = (Hashtable)ViewState["GParam"];
Hashtable DPaRam = (Hashtable)ViewState["DPaRam"];
Hashtable PageParam= (Hashtable)ViewState["PageParam"];
string strparam=ViewState["strparam"].ToString();
是将开始查询的条件转化回来
DataTable dt = OrderMng.OrderList_GetSupOrderList(GParam, DPaRam, PageParam, strparam);
相同的条件查询后到datatable
第二步:处理datatable , 修改列名,排序,修改显示的内容


第三步:将datatable转化成excel

{
string Filename = fileName;
System.Web.HttpContext context = System.Web.HttpContext.Current;
if ((tb !=null))
{
context.Response.Clear();
context.Response.Charset ="GB2312";
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.Response.ContentType ="application/ms-excel";
context.Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(Filename, System.Text.Encoding.GetEncoding("GB2312")) +DateTime.Now.ToString("yyyyMMdd")+ ".xls\"");
CultureInfo cult =new CultureInfo("zh-CN", true);
StringWriter sw =new StringWriter(cult);
HtmlTextWriter htw =new HtmlTextWriter(sw);
DataGrid dgrid =new DataGrid();
dgrid.DataSource = tb.DefaultView;
dgrid.AllowPaging =false;
dgrid.DataBind();
htw.WriteLine("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=GB2312\">");
dgrid.RenderControl(htw);
context.Response.Write(sw.ToString());
context.Response.End();
}
}
Gridview 分多页时导出excel的解决方案的更多相关文章
- gridView AspNetPager 翻页时 弹出窗体关闭报错
gridView AspNetPager 翻页后,你右击刷新或F5会发现弹出一个刷新页面. 这是因为默认翻页都是用dopostback方式回发的.因为这时的页面已经不是原来的页面.所以会弹出提示. 这 ...
- 使用bootstrap-table时导出excel开头的0被自动省略
原因是excel"智能"识别数据格式,有时聪明反被聪明误. 解决方案:修改tableExport.js 搜索: if (typeof tdcss != 'undefined' &a ...
- Asp.net中导出Excel文档(Gridview)
主要思路,通过GridView来导出文档. 新建一个Aspx页面,页面创建GridView控件,后台绑定好数据源.然后load中直接打印即可导出 前台的GridView <asp:GridVie ...
- NPOI、MyXls、Aspose.Cells 导入导出Excel(转)
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...
- 按模板导出Excel
说明:开发环境 vs2012 asp.net mvc4 c# 注意:Excel模板有多个sheet页,导出Excel的时候,同时给多个sheet页填充数据 1.项目结构 3.Excel模板(注意she ...
- Gridview数据导出excel时身份证号码为科学计数法的解决方法
if (e.Row.RowType == DataControlRowType.DataRow) { string id = this.GridView1.DataKeys[e.Row.RowInde ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- 导出excel时,跳转新空白页,不要跳转怎么改
导出excel的时候,偶尔会出现跳转到一个新页面再导出excel js中用window.open()做跳转 不想让它跳转到新页面,需要加一个隐藏的iframe <iframe name=&quo ...
- yii2 数据导出 excel导出以及导出数据时列超过26列时解决办法
作者:白狼 出处:http://www.manks.top/article/yii2_excel_extension 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
随机推荐
- select标签让文字垂直居中问题
直接在select样式中添加:padding:npx 0; n的大小视select标签的高度而定.一般为8px左右.
- NOIP 考前 计算几何练习
BZOJ 1580 直接解析算出每段的时间然后模拟即可 #include <iostream> #include <cstdio> #include <cstring&g ...
- C++/java之间的Socket通信大小端注意事项
在一个物联往项目中,需要java云平台与一个客户端做socket定制协议的通信:然而在第一次测试时,并没有按照预想的那样完成解析.查找资料以后是因为客户端的数据读取方式为小端模式,而java默认采用大 ...
- vb小程序浅析
系统 : Windows xp 程序 : BJCM10B 程序下载地址 :http://pan.baidu.com/s/1dFyXe29 要求 : 编写注册机 使用工具 : OD 可在看雪论坛中查找关 ...
- java 消息机制 ActiveMQ入门实例
1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 我下载的时候是 ActiveMQ 5.14.0 Release版 2.运行ActiveMQ 解压缩ap ...
- Java中获取键盘输入值的三种方法
Java中获取键盘输入值的三种方法 Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...
- JavaScript:substr vs substring vs slice
参考文章: JavaScript取子串方法slice,substr,substring对比表
- ionic 打包签名
IONIC用一下命令打包会自动签名并且打包 ionic build android 自己签名并且打包方法: 1>在你项目app\platforms\android目录下新建文件:debug-si ...
- Linux IO漫谈
本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Background IO可能是我们接触最频繁的系统调用,比如printf到终端,send content到对端, ...
- libevent之丢失header问题
本文为原创,转载请注明:http://www.cnblogs.com/gistao/ 背景 分享一个hhvm使用http server方式来处理请求的问题及对应的patch.hhvm3+版本支持fas ...