DataGrid导出Excel遇到的一些问题

【WPF】将DataGrid内容导出到Excel 引言在完成将DataGrid的内容导出到Excel的时候,参考了一个印度小伙的文章http://www.codeproject.com/Articles/120480/Export-to-Excel-Functionality-in-WPF-DataGrid,很清晰,结合着自己的实际项目写了这篇文章,分享给大家。步骤一:创建窗体,绘制datagrid这里不多讲,直接拖控件就行。二:为datagrid 阅读详情
项目需要,最近一直在弄WEB报表方面的东西。在做的时候。根据用户需求。做了一个表格数据(DataGrid)导出到Excel。在做的时候发现了个问题。
由于数据量比较大。势必要做分页。如此这样。利用最简单的属性生成器。给DataGrid分页。然后写导出到Excel的代码。代码如下:
    private void ExportExcelFromDataGrid( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
        
{
            Response.Clear();
            Response.Buffer
=true;     
            Response.Charset
="utf-8";           
            Response.AppendHeader(
"Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );     
            Response.ContentEncoding
=System.Text.Encoding.Default;//设置输出流为简体中文   
            Response.ContentType  =  "application/ms-excel";//设置输出文件类型为excel文件。     
            this.EnableViewState =  false;           
            System.Globalization.CultureInfo myCItrad 
= new System.Globalization.CultureInfo("ZH-CN",true);   
            System.IO.StringWriter   oStringWriter 
= new System.IO.StringWriter(myCItrad);     
            System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);   
            ToExcelGrid.RenderControl(oHtmlTextWriter);     
            Response.Write(oStringWriter.ToString());
            Response.End();
        }
然后在一个按钮事件中。调用下。代码如下
private void Button3_Click(object sender, System.EventArgs e)
    
{
        
string filename = "test.xls";
        
this.ExportExcelFromDataGrid ( filename , this.DataGrid1 );
        
    }
结果程序给报错。如下:
“/Web_DVBAres_C2.2”应用程序中的服务器错误。
--------------------------------------------------------------------------------

类型“DataGridLinkButton”的控件“DataGrid1__ctl5__ctl1”必须放在具有 runat=server 的窗体标记内。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 类型“DataGridLinkButton”的控件“DataGrid1__ctl5__ctl1”必须放在具有 runat=server 的窗体标记内。

源错误:


行 61:             System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);    
行 62:             System.Web.UI.HtmlTextWriter oHtmlTextWriter  =  new   System.Web.UI.HtmlTextWriter(oStringWriter);  
行 63:             ToExcelGrid.RenderControl(oHtmlTextWriter);    
行 64:             Response.Write(oStringWriter.ToString());
行 65:             Response.End();
 

源文件: c:/inetpub/wwwroot/web_dvbares_c2.2/webform3.aspx.cs    行: 63

堆栈跟踪:


[HttpException (0x80004005): 类型“DataGridLinkButton”的控件“DataGrid1__ctl5__ctl1”必须放在具有 runat=server 的窗体标记内。]
   System.Web.UI.Page.VerifyRenderingInServerForm(Control control) +152
   System.Web.UI.WebControls.LinkButton.AddAttributesToRender(HtmlTextWriter writer) +38
   System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter writer) +17
   System.Web.UI.WebControls.DataGridLinkButton.Render(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
   System.Web.UI.WebControls.TableCell.RenderContents(HtmlTextWriter writer) +55
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
   System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +7
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   System.Web.UI.WebControls.Table.RenderContents(HtmlTextWriter writer) +99
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
   System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +7
   System.Web.UI.WebControls.BaseDataList.Render(HtmlTextWriter writer) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   Web_DVBAres_C2._2.WebForm3.ExportExcelFromDataGrid(String filename, DataGrid ToExcelGrid) in c:/inetpub/wwwroot/web_dvbares_c2.2/webform3.aspx.cs:63
   Web_DVBAres_C2._2.WebForm3.Button3_Click(Object sender, EventArgs e) in c:/inetpub/wwwroot/web_dvbares_c2.2/webform3.aspx.cs:132
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1277
原想“DataGridLinkButton”的控件“DataGrid1__ctl5__ctl1”必须放在具有 runat=server 的窗体标记内。 既然这么提示。最BC的做法。就是“DataGrid1__ctl5__ctl1”这个“控件“加上runat=server。结果在项目一搜。压根就没发现这个控件。既然这样。没办法。只有合理利用资源。
Google下了。看了一些文章。发现是由于在DataGrid控件上。利用属性生成器。添加了分页“控件”。导致报错。去掉自带的分页功能。势必要写分页程序,而且还有可能要改动数据结构。得不偿失。没办法只好继续找办法。后面看到木野狐兄写的一个导出Excel的帮助类。直接资源利用。问题解决。附上野狐兄的代码(如果野狐兄不希望被转的话.麻烦说声.立马删*_*)

//=============================================================================== 
// 
// 从 DataGrid    或数据源中导出数据到 Excel 并提示下载的帮助类。 
// 
// Author:    Roger Chen (木野狐) 
// Date:    2005-1-27 
// Version: 1.22 
// History: 
//            v1.00    使用静态方法的形式实现该类,提供多种重载方式。 
//            v1.01    添加了对 DevExpress.Web.ASPxGrid.ASPxGrid 的直接导出支持。 
//            v1.20    改写为实体类。 减少了重复代码。 
//            v1.21    2005-2-1     
//                    修改了一个构造函数的重载形式中异常检测的代码。延迟到 Export() 方法。 
//            v1.22    2005-2-3     
//                    1. 修正了 Export() 方法中缺少 _titles != null 判断的 bug. 
//                    2. 修正了长的数字被 Excel 自动转换为科学计数法的毛病。 
//                        (修改的办法来自 http://dotnet.aspx.cc) 
// 
//=============================================================================== 
namespace  Web_DVBAres_C2._2
{ 
    
using System; 
    
using System.IO; 
    
using System.Data; 
    
using System.Web; 
    
using System.Web.UI; 
    
using System.Web.UI.WebControls; 
    
using System.Text; 
    
using System.Globalization; 
    
using System.Collections; 
    
//using DevExpress.Web.ASPxGrid; 
 
    
public class ExcelHelper 
    
{ 
        
Fields 
 
        
Properties 
 
        
.ctor 
         
        
public Methods 
 
        
private Methods 
    }
 
}
 
调用方法
            
// 1. 导出一个不分页的 DataGrid 到 Excel.
ExcelHelper helper = new ExcelHelper();
// 设置文件名(可省。省略则自动生成一个随机的文件名)
helper.FileName = "xxx.xls";
helper.Export(dg);

// 2. 导出分页的 DataGrid,需要同时指定他的数据源(DataTable)
DataTable dt = ;
ExcelHelper helper 
= new ExcelHelper(dt);
// 最大导出条数(可省)
helper.MaxRecords = 2000;
helper.Export();

// 3. 如果要指定列标题,这样调用:
DataTable dt = ;
ExcelHelper helper 
= new ExcelHelper(
    
new string[] {"列标题1", "列标题2",  }, 
    dt);
helper.Export();

// 4. 如果还要指定字段名称, 这样调用(因为输出的字段名称不一定要和 DataTable 里字段名称的次序相同。
DataTable dt = ;
ExcelHelper helper 
= new ExcelHelper(
    
new string[] {"列标题1", "列标题2",  }, 
    
new string[] {"字段名1", "字段名2",  },
    dt);
helper.Export();



 
强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析 本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。 阅读详情

相关推荐

Power BI财销一体分析——KPI分析应用实践

第九步:插入三个散点图,行拖入分销商表分销商字段,将度量值中的销量拖入X轴,将利润拖入Y轴,大小拖入度量值总销售额,将分销商表业务类型字段作为筛选条件添加给散点图,分别选择专业自行车店、增值经销商、仓库,使视觉对象固定显示不同业务类型的散点分布。这个公式其实是不需要我们自己写的,依赖于快度量值功能星级评分,基值选择度量值总销售额,星数选择5,最低星值评分选择0,最高星级评分值选择100,点击添加,星级评分度量值就建立好了,接下来我们理解一下公式。好的,今天的讲解就到这里。

BI瓶子的博客 1553

导出excel,后台执行,前台无反应

1.Ajax请求导出Excel的问题描述:   前端发起Ajax请求get或post,后台使用Poi生成excel文件,最后用response输出excel文件流。整个调用过程都没有报任何错,excel文件也生成在本地,但浏览器没有弹出文件下载,毫无反应。 2.解决:   开始一直以为是浏览器兼容性,或后台输出文件流代码有问题,调了半天,也都一样,不报任何错。后来上网搜发现在类似的问题,Ajax导出excel没反应,网上有人说不能使用ajax,换成地址重定向 window.location.href.

sanshou的专栏 3496

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】Caliper从0到使用

技能大赛样题解析,caliper题目从0到使用

weixin_52865146的博客 2080

根据模板导出文件,解决本地或idea导出可以,测试导出不成功的问题

核心代码

jesseXu的博客 670

【AI 智能体】Windows 环境 Hermes Agent(爱马仕)安装详细过程

Windows 环境 Hermes Agent(爱马仕)安装详细过程

congge_study的博客 1830

2026年03月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

本文收录于《,订阅后可阅读专栏内所有文章。

人生就是一个不断学习的过程 240

ext导出excel JAVA_【转载】解决有关Ext Grid导出Excel在JSP等环境中不可用的问题

解决有关Ext Grid导出Excel在JSP等环境中不可用的问题有关ExtGrid导出Excel的实现方式,网上已经有很多,官方也给出了一个方案,代码不是很完善,不过已经有高人对这个进行了修正。具体实现方式及代码我这里就不再多说了,大家可以参看:http://www.dojochina.com/index.php?q=node/1254,附件:gridToExcel.js.txt其基本思想是:客...

weixin_35011928的博客 237

仿真系列专栏介绍

大家好!欢迎来到我的仿真学习系列专栏!这是一个我在学习仿真技术过程中整理和分享的系列文章。作为一名正在不断学习和实践的工程师,我希望通过这个专栏,和大家一起探索仿真技术,尤其是在高速信号完整性方面的应用。

案例文章,高速信号 368

Excel的hyperlink函数使用方法详解

http://www.datasoldier.net/post/hyperlink.html hyperlink()可不是一个简单的excel超链接函数,它让excel电子表格和你想要的目标关联在一起,把电子表格变身为一个简单的操作平台,你想去哪里就可以创建去往哪里的快捷方式。当单击hyperlink函数所在的单元格时,将打开链接的文件或跳转到指定工作表的单元格区域,或者指定的网页。

yibo492387的专栏 2万+

备赛电赛学习硬件篇(六):复位电路工作原理

上电复位的工作过程是在加电时,复位电路通过电 容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。

m0_61022809的博客 6773

【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解

本文进行布线铺铜实战及详解布线铺铜的细节

嵌入式阿齐Archie 4万+

GridView 导出数据到 EXCEL 失败

GridView 导出数据到 EXCEL 失败  作  者:  yyw84 (思考中...)  等  级:    信 誉 值:  100  所属社区:  .NET技术 ASP.NET  问题点数:  50  回复次数:  11  发表时间:  2006-1-7 16:06:34         程序运行到"GridView1.RenderControl(hw); "抛出异常:Control

得峰的专栏 [网络收藏] 1450

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[VB.NET]winform下DataGrid导出excel问题

<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 786

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

DataGrid导出到excel问题

症状 DataGrid导出到excel,如果不保存导出的Xls文件,会自动关闭当前页面。 代码 public void DGToExcel(DataGrid dataGrid) { HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xl

eecool的专栏 791

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

asp.net中DataGrid利用RenderControl导出Excel的问题

asp.net中DataGrid利用RenderControl导出Excel的问题 问题: "DataGridLinkButton"的控件“DataGrid1_ctl14_ctl1“必须放在具有runat=server的窗体标记内。 原因: DataGrid分页显示,RenderControl导出前需要先将分页取消 解决方案: ...

weixin_34303897的博客 219

一句代码解决easyui datagrid导出到excel的问题

最简单easyui datagrid导出到excel的办法

丙睦的进阶之路 2613

轻松解决datagrid-export.js的导出excel数字变科学计数法的问题

有个项目需要用到jquery的easyui和导出excel,发现官方下载的datagrid-export.js有几处bug,例如导出的excel格式,长数字会默认按科学计数法显示或没了零开头的数字,不符合所见即所得要求。 首先说明前提条件,前端网页结果显示是正常无误的,用txt文本打开导出的字段也是正常的零开头的长位数字“012345678910”。 这个问题,如果靠客户端的excel或wps打开再转换单元格格式的话(比如单元格逐个添加单引号“'”或者设置文本再粘贴或分列导入等方法),往往要求操作员复.

qq_41702574的博客 1678

解决datagrid导出到word(excel)浏览器直接打开的问题

解决方法如下:1.打开某个文件夹,点菜单-工具-文件夹选项2.选择文件类型选项卡3.找到doc(xls)文件类型,点高级4.在编辑文件类型窗口中选中下载后确认打开 转载于:https://www.cnblogs.com/wyq2004/archive/2004/07/26/27352.html...

weixin_30713953的博客 102

DataGrid导出到Excel

DataGrid导出到Excel的时候,某些数字内容显示不正确,"3.62201E+14"的格式 WebForm中,在DataGrid的ItemDataBound事件内 if(e.Item.ItemType  ==  ListItemType.Item  ||  e.Item.ItemType  ==  ListItemType.AlternatingItem){e.Item.Cells[0...

weixin_33937778的博客 79

DataGrid 导出 Excel 中文乱码

public static void DataGridToExcel(DataGrid dataGrid, string fileName) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpConte

踏歌长行的博客 5336

DataGrid导出为excel和word

Introduction DataGrid is one of the most coolest controls in ASP.NET. One thing that all developers need is to put the DataGriddata into an Excel sheet. In this article I will show you how you can

chenlaoyang的专栏 865

将datagrid数据导到excel的一个问题

前几天,从 fengzhimei   那里看到一篇在 asp.net将 datagrid中的数据导到excel中的文章 ,今天有空试了试,发现在导出有排序功能的表格的出现问题(设置模板列也会存在问题):在运行加载页面时,提示 datagrid中的某些列 必须放在 runat=server 的form中。csdn中有人问这样的问题,好像都没有解决,查了一些资料,发现这是由于datagrid中的控件引...

weixin_34203832的博客 147

DataGrid数据导出到Excel

网上最常见的导出代码,这个方法的优点是简单.但是缺点就是不能格式化.如果datagrid中有linkbutton列,导出程序就会报错类型“DataGridLinkButton”的控件“DataGrid1__ctl2__ctl0”必须放在具有 runat=server 的窗体标记内。纠正这个错误的方法就是对datagrid进行重新绑定,当然在重新绑定之前最好设置参数,这样查询的时候是LinkButt...

weixin_30360497的博客 130

.net导出Excel

protected void btnPrint_Click(object sender, EventArgs e) { DataTable dt = DbHelperSQL.GetTable("select b.ProNumber as 产品编号,b.Name as 产品名称,b.kucun as 剩余库存,b.Price as ...

weixin_34252686的博客 120

将数据绑定DataGrid并输出Excel文档的数据模型问题

一个值得注意的小问题。 在写一个将数据绑定DataGrid并输出到Excel文档的方法的时候,碰到了一个小小的问题,就是绑定的数据都是齐全的,但是输出的时候,总是少了几列的内容。 反复检查之下,终于发现了问题: ExportToExcel方法如下: #reg

有趣的小申 578
上一篇: 心理测试^_-||
下一篇: 肥去,倒计时.
CodeLib
博客等级 码龄20年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值