频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

关于Asp.net中导出Excel表格的问题

来源: 作者: 出处:巧巧读书 2007-08-06 进入讨论组
访问地址 http://www.qqread.com/aspdotnet/d324722.html
关于Asp.net中导出Excel表格的问题(图一)
        private void ExportExcelFromDataGrid
关于Asp.net中导出Excel表格的问题(图一)                         ( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
关于Asp.net中导出Excel表格的问题(图二)关于Asp.net中导出Excel表格的问题(图三)        ...{
关于Asp.net中导出Excel表格的问题(图四)            Response.Clear();
关于Asp.net中导出Excel表格的问题(图四)            Response.Buffer=   true;     
关于Asp.net中导出Excel表格的问题(图四)            Response.Charset="utf-8";           
关于Asp.net中导出Excel表格的问题(图四)            Response.AppendHeader关于Asp.net中导出Excel表格的问题(图四)                                   ("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );     
关于Asp.net中导出Excel表格的问题(图四)            Response.ContentEncoding=System.Text.Encoding.Default;//设置输出流为简体中文   
关于Asp.net中导出Excel表格的问题(图四)            Response.ContentType   =   "application/ms-excel";//设置输出文件类型为excel文件。     
关于Asp.net中导出Excel表格的问题(图四)            this.EnableViewState   =   false;           
关于Asp.net中导出Excel表格的问题(图四)            System.Globalization.CultureInfo   myCItrad   =  
                                       new   System.Globalization.CultureInfo("ZH-CN",true);   
关于Asp.net中导出Excel表格的问题(图四)            System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);     
关于Asp.net中导出Excel表格的问题(图四)            System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   
关于Asp.net中导出Excel表格的问题(图四)                                    new   System.Web.UI.HtmlTextWriter(oStringWriter);   
关于Asp.net中导出Excel表格的问题(图四)            ToExcelGrid.RenderControl(oHtmlTextWriter);     
关于Asp.net中导出Excel表格的问题(图四)            Response.Write(oStringWriter.ToString());
关于Asp.net中导出Excel表格的问题(图四)            Response.End();
关于Asp.net中导出Excel表格的问题(图五)        }
关于Asp.net中导出Excel表格的问题(图一)
关于Asp.net中导出Excel表格的问题(图一)        private void Button4_Click(object sender, System.EventArgs e)
关于Asp.net中导出Excel表格的问题(图二)关于Asp.net中导出Excel表格的问题(图三)        ...{
关于Asp.net中导出Excel表格的问题(图四)            this.Panel1.Visible = false;            
关于Asp.net中导出Excel表格的问题(图四)            string filename = "内训师.xls";
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.Columns[6].Visible = true;
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.Columns[7].Visible = true;
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible = false;  // *
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible = false;  // *
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.AllowSorting = false;  // *
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.AllowPaging = false; 
关于Asp.net中导出Excel表格的问题(图四)            this.DataGrid1.SelectedIndex = -1;    // *
关于Asp.net中导出Excel表格的问题(图四)            this.BindGrid();
关于Asp.net中导出Excel表格的问题(图四)            this.ExportExcelFromDataGrid ( filename , this.DataGrid1 );
关于Asp.net中导出Excel表格的问题(图五)        }
关于Asp.net中导出Excel表格的问题(图一)    }

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

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

我认为,这种回答是很不准确的,理由如下:
  1. 通常使用这种代码的人他/她的DataGrid,最起码已经能用了,所以必定放在那个具有runat=server 的form标签里了。
  2. 报错是LinkButton,而不是DataGrid,很多细心的朋友很可能会说,我一直在用DataGrid,LinkButton在哪里来的。
其实真正的问题是,上面的代码没有加了 // * 的那几行代码引起的。
当然如果你的DataGrid,没有排序,没有使用那种按钮列的话,是不会出问题的。
言归正传,LinkButtion其实是你将DataGrid设为可排序时候,的表头包含的,所以我要将DataGrid的排序设为False。
同样得到上面的其实,那些按钮列,什么"编辑"、“删除”等等这些,也是用了LinkButton,把他设为不可见就是了。
其实说得再明白一点就是,将有可能产生LinkButton,或其他控件的东西都不让它输出就是了 更多文章 更多内容请看.NET移动与嵌入式技术.NET开发手册ASP.NET教程专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章