在asp.net应用程序中使用office(主要是excel)。[英] using office(excel mainly) in asp.net app

问题描述

我想从 GridView 数据创建一个 excel 文件并提示用户下载或保存文件.我知道如何在 asp.net 中使用 response.addheader ...excel文件中的白色背景,没有显示行和列边框,但只显示了gridview数据的边框.所以我正在考虑使用office对象库来创建excel文件并独立下载版本,就像任何excel版本都可以工作.......codeproject 专家请帮助我.....

推荐答案

您好,

我正在使用 Matt Berseth 解决方案.他的网页不再可用,所以我将在这里 c/p 代码...
助手类
使用系统;使用 System.Data;使用 System.Configuration;使用 System.IO;使用 System.Web;使用 System.Web.Security;使用 System.Web.UI;使用 System.Web.UI.WebControls;使用 System.Web.UI.WebControls.WebParts;使用 System.Web.UI.HtmlControls;/// <摘要>/// GridView 导出实用程序/// </summary>public class GridViewExportUtil{/// <摘要> /// 将 GridView 导出到 excel /// </summary> /// <参数 name="fileName">文件名</param> /// <参数 name="gv">要导出的GridView</param> public static void 导出(string fileName, GridView gv){HttpContext.Current.Response.Clear();HttpContext.Current.Response.AddHeader("content-disposition", string.格式("附件;filename={0}", fileName));HttpContext.Current.Response.ContentType = "application/ms-excel";使用 (StringWriter sw = new StringWriter()){使用 (HtmlTextWriter htw =  HtmlTextWriter(sw)){//创建一个包含网格的表单表 table = new Table();//在表格中添加标题行if (gv.HeaderRow != null){GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);table.Rows.Add(gv.HeaderRow);}//将每个数据行添加到表中foreach (GridViewRow 行 in gv.Rows){GridViewExportUtil.PrepareControlForExport(row);table.Rows.Add(row);}//在表格中添加页脚行if (gv.FooterRow != null){GridViewExportUtil.PrepareControlForExport(gv.FooterRow);table.Rows.Add(gv.FooterRow);}//将表格渲染到htmlwritertable.RenderControl(htw);//将htmlwriter渲染到响应中HttpContext.Current.Response.Write(sw.ToString());HttpContext.Current.Response.End();}}}/// <摘要> /// 用文字替换任何包含的控件 /// </summary> /// <参数 name="control"></param> private static void PrepareControlForExport(控制控制){for (int i = 0; i< control.Controls.Count; i++){控制电流 = control.Controls[i];if (当前 is LinkBut​​ton){control.Controls.Remove(当前);control.Controls.AddAt(i, new LiteralControl((current as LinkBut​​ton).Text));}else if (当前 is ImageButton){control.Controls.Remove(当前);control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));}else if(当前 is 超链接){control.Controls.Remove(当前);control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));}else if(当前 is DropDownList){control.Controls.Remove(当前);control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));}else if(当前 is 复选框){control.Controls.Remove(当前);control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "假"));}if (current.HasControls()){GridViewExportUtil.PrepareControlForExport(current);}}}}

使用网格制作 ASP.NET 页面并在按钮单击时调用导出
GridViewExportUtil.Export("Customers.xls", this.gvCustomers);

浏览以下链接

http://netoffice.codeplex.com/[^]

http://msdn.microsoft.com/en-us/library/aa701256(v=office.11​​).aspx[^]

谢谢
--RA

本文地址:https://www.itbaoku.cn/post/1394839.html