单页的网站怎么做的,违法网站做网站的人会受罚嘛,深圳百度推广网站建设,济南建站公司模板原文出处#xff1a;asp.net导出数据到Excel的几种方法(1/3) 、asp.net导出数据到Excel的几种方法(2/3)、asp.net导出数据到Excel的几种方法(3/3) asp.net导出到Excel也是个老生常谈的问题#xff0c;在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能… 原文出处asp.net导出数据到Excel的几种方法(1/3) 、asp.net导出数据到Excel的几种方法(2/3)、asp.net导出数据到Excel的几种方法(3/3) asp.net导出到Excel也是个老生常谈的问题在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能得到该控件生成的HTML然后以Excel文件的类型输出到客户端。这种方法生成的其实是个HTML文件只不过Excel支持HTML格式所以使用起来似乎和真正的Excel文件没什么两样但它终究不是Excel格式它不能当作数据源供其他程序调用。 这种实现起来比较简单就不多述请看代码。 public void ExportExcel( System.Web.UI.WebControls.WebControl objControl, string strFileName) ...{ strFileName System.Web.HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8); System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.Buffer true; System.Web.HttpContext.Current.Response.Charset gb2312; System.Web.HttpContext.Current.Response.AppendHeader(Content-Disposition, online; filename strFileName .xls); System.Web.HttpContext.Current.Response.ContentEncoding System.Text.Encoding.GetEncoding(gb2312); System.Web.HttpContext.Current.Response.ContentType application/ms-excel; 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); objControl.RenderControl(oHtmlTextWriter); objControl null; System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString().Replace(td, td STYLEMSO-NUMBER-FORMAT:\)); System.Web.HttpContext.Current.Response.Buffer false; System.Web.HttpContext.Current.Response.End(); } 可能出现的错误 1、只能在执行 Render() 的过程中调用 RegisterForEventValidation 解决办法修改页面选项% Page EnableEventValidation false 还有一种办法是修改web.config的但影响全局这里就不推荐了。 2...必须放在具有 runatserver 的窗体标记内。 解决办法 在页面中重写VerifyRenderingInServerForm方法不对控件要求form容器进行验证 public override void VerifyRenderingInServerForm(Control control) { //这里没有内容。 } 第二种方法是利用Excel的Com接口库来完成这种方法的优点是功能强大可像使用Excel程序一样来操作Excel文件缺点是需要服务器安装Excel程序且需要一定的安全配置。 一、准备工作 1)安装Microsoft Excel 2)Com的安全设置。 在命令行输入DCOMCNFG 进入组件服务设置界面如图 打到Micorosoft Excel应用程序如图 右键点击属性然后点击“安全”将“启动和激活权限”、“访问权限”、“配置权限”都选择自定义然后添加运行ASP.NET的用户(IIS6以上是NETWORK SERVICE以下是ASPNET)给予全部权限如图所示 3配置文件目录权限因为可能要保存文件到某目录中所以要将该目录对ASP.NET用户予以写入权限。 二、使用 在VS.NET的工程中添加引用如图 如果添加引用后Excel组件不能正常使用(excel组件的左边显示一个黄色的感叹号)可以使用.Net工具进行组件转换。 转换方法运行vs.net的命令行工具进入Office目录,输入TlbImp Excel.exe即可然后删除有问题的引用重新添加引用这次使用浏览然后引用Excel.DLL。 根据我的经验vs2003可以直接引用Microsoft Excel x.0 ObjectLibary而vs2005就需要使用工具转换成DLL才可使用。 然后即可以使用Excel.Application对象来操作它了。 以下就一段简单的将GirdView的数据导出到Excel的代码功能较简单权当抛砖引玉了。 this.GridView1.DataBind(); Excel.ApplicationClass oExcel new Excel.ApplicationClass(); object oMissing System.Reflection.Missing.Value; oExcel.Workbooks.Add(oMissing); Excel.Workbook oBook oExcel.Workbooks[1]; Excel.Worksheet oSheet (Excel.Worksheet)oBook.Sheets[1]; oSheet.Name this.Title; Excel.Range rg; for (int j 0; j this.GridView1.HeaderRow.Cells.Count; j) { rg ((Excel.Range)oSheet.Cells[ 1, j 1]); rg.FormulaR1C1 this.GridView1.HeaderRow.Cells[j].Text; } for(int i 0;ithis.GridView1.Rows.Count;i) { for (int j 0; j this.GridView1.Rows[0].Cells.Count; j) { rg ((Excel.Range)oSheet.Cells[i 2, j1]); rg.FormulaR1C1 this.GridView1.Rows[i].Cells[j].Text; } } rg null; string VirFileName Guid.NewGuid().ToString() .xls; oBook.SaveAs(Server.MapPath(VirFileName), Excel.XlFileFormat.xlExcel9795, oMissing, oMissing, oMissing, oMissing, Excel.XlSaveAsAccessMode.xlExclusive, oMissing, oMissing, oMissing, oMissing, oMissing); oExcel.Workbooks.Close(); oExcel.Quit(); oSheet null; oBook null; oExcel null; GC.Collect(); Response.Redirect(VirFileName); 说明一下为了Excel进程在使用完成后能彻底退出需要将所有对象在使用完成后清空像代码中的rg,oSheet,oBook,oExcel等。 第三种方法是利用OELDB数据访问对象操作Excel文件达到将数据导出到Excel的目的这种方法可能用的人不太多缺点是必须有一个存在的Excel文件。优点是服务器不需要安装Excel且生成的Excel是标准的Excel格式可以当作数据源使用。 准备工作 1)先用准备一个Excel文件这个Excel文件可以是空的或是有一定格式的当做数据模板使用。 2)将操作的目录给ASP.NET用户(ASPNET 或NETWORK SERVICE)写入权限。 以下是示例 说明一下如果这个模板文件是个空文件则需要使用Create Table创建一个工作表否则只需使用已有的表进操作就可以了。 DataTable dt new DataTable(); dt.Columns.Add(name); dt.Columns.Add(age, typeof(int)); dt.Columns.Add(phone); dt.Rows.Add(老张, 40,99213812); dt.Rows.Add(小李, 28,a21313); dt.Rows.Add(小王, 22,2131434); string FileName Guid.NewGuid().ToString().xls; string sNewFullFile Server.MapPath(FileName); try { File.Copy(Server.MapPath(format.xls), sNewFullFile); } catch (Exception er) { Response.Write(er.Message); return; } string strConn ProviderMicrosoft.Jet.OLEDB.4.0;Persist Security InfoTrue;Data Source sNewFullFile ;Extended PropertiesExcel 8.0;; System.Data.OleDb.OleDbConnection conn new System.Data.OleDb.OleDbConnection(strConn); OleDbCommand cmd null; bool bRet false; try { conn.Open(); cmd new OleDbCommand(create table [sheet4]([姓名] Text,[年龄] int,[电话] Text),conn); cmd.ExecuteNonQuery(); string strSQL INSERT INTO [Sheet4$] ([姓名], [年龄],[电话]) VALUES (?, ?, ?); cmd new OleDbCommand(strSQL, conn); for (int i 0; i 3; i) { cmd.Parameters.Add(i.ToString(), OleDbType.VarChar); } DataView dv dt.DefaultView; foreach (DataRowView row in dv) { cmd.Parameters[0].Value row[name].ToString(); cmd.Parameters[1].Value (int) row[age]; cmd.Parameters[2].Value row[phone].ToString(); cmd.ExecuteNonQuery(); } bRet true; } catch (Exception er) { Response.Write(er.Message); } finally { if (cmd ! null) { cmd.Dispose(); } conn.Dispose(); } if(bRet) Response.Redirect(FileName); 标签: Asp.Net, Excel 绿色通道好文要顶关注我收藏该文与我联系