首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> ASP.NET技巧 -> 关于Asp.net中使用以下代码导出Excel表格的问题
关于Asp.net中使用以下代码导出Excel表格的问题


文章类别:ASP.NET技巧 来源: 作者: 发表日期:2006-9-24 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

 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 Button4_Click(object sender, System.EventArgs e)
        {
            this.Panel1.Visible = false;           
            string filename = "内训师.xls";
            this.DataGrid1.Columns[6].Visible = true;
            this.DataGrid1.Columns[7].Visible = true;
            this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible = false;
            this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible = false;
            this.DataGrid1.AllowSorting = false;
            this.DataGrid1.AllowPaging = false;
            this.DataGrid1.SelectedIndex = -1;
            this.BindGrid();
            this.ExportExcelFromDataGrid ( filename , this.DataGrid1 );
        }

原理是利用DataGrid(其实是其父类Control)的RenderControl方法输出,整个DataGrid的外观时,将这些HTML代码写入到缓冲区,同时设置一下 ContentType ,让Excel自己的自动纠错功能将这个输出存为一个Excel文件。

很多网上的朋友使用了以上这种可粘贴性强的代码,发现不好用,反映的错误类似:
“LinkButton必须放在一个具有runat=server的标签的Form”之类的话,而更多的网友说:
问题很明显,因为DataGrid没有放在runat=server 的Form里面,加上就可以了。

我认为,这种回答是很不准确的,理由如下:

通常使用这种代码的人他/她的DataGrid,最起码已经能用了,所以必定放在那个具有runat=server 的form标签里了。
报错是LinkButton,而不是DataGrid,很多细心的朋友很可能会说,我一直在用DataGrid,LinkButton在哪里来的。
其实真正的问题是,上面的代码没有加了 // * 的那几行代码引起的。
当然如果你的DataGrid,没有排序,没有使用那种按钮列的话,是不会出问题的。
言归正传,LinkButtion其实是你将DataGrid设为可排序时候,的表头包含的,所以我要将DataGrid的排序设为False。
同样得到上面的其实,那些按钮列,什么"编辑"、“删除”等等这些,也是用了LinkButton,把他设为不可见就是了。
其实说得再明白一点就是,将有可能产生LinkButton,或其他控件的东西都不让它输出就是了

http://www.cnblogs.com/killkill/archive/2006/09/21/510289.html

上一篇:FCKEditor在Asp.net的安装 下一篇:关于XSL中count()的使用
本栏目热门文章
·如何实现无刷新的DropdownList联动效果 2005-10-4
·使用HttpWebRequest向网站模拟上传数据 2005-10-4
·ASP.NET中文件上传下载方法集合 2006-5-28
·当DataSet中包含主/子表时,Update更新步骤 2005-10-6
·ASP.NET2.0实现无刷新客户端回调 2005-11-13
·分享个极好的无刷新二级联动下拉列表,同样适用与firefox 2005-10-19
·在Web DataGrid中当鼠标移到某行与离开时行的颜色发生改变( 2005-10-4
·ASP.NET中实现Flash与.NET的紧密集成 2005-11-21
·关于Asp.net页面Page_Load被执行两次的问题 2005-10-4
·ASP.NET极限:页面导航 (翻译) 2005-10-8
新近更新文章
·asp.net2.0 上传图片并为用户创建相应文件夹 2006-9-26
·ASP.NET如何存取SQL Server数据库图片 2006-9-24
·在Java和.NET平台的加密术比较 2006-9-24
·关于Asp.net中使用以下代码导出Excel表格的问题 2006-9-24
·FCKEditor在Asp.net的安装 2006-9-24
·asp.net在ie里调试 2006-9-24
·ASP.NET2.0调用MySql的存储过程 2006-9-24
·在asp.net页面中使用异步读取 2006-9-24
·一个通用的分页类 2006-9-24
·ASP.NET 2.0“插件”说 2006-9-24
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: