在做.NET项目时,会经常遇到要导出文件的问题,如将DataGrid中的数据导出到excel、word文件等,经常使用的是Office中的OWC组件,这个组件提供的功能很强大,在一般的项目中都可以满足当前的需要.但是这个功能强大的组件使用起来却不是很方便,不但有版本的问题,而且代码量也相对比较大.现在简单介绍一下利用Respone对象和相关的IO实现导出excel/word等文件的方法。
1.Respone对象及相关的IO介绍
System.IO.StringWriter SW = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter HTW=new System.Web.UI.HtmlTextWriter(SW);
Page.RenderControl(HTW);
//Page为要导出的对象,当前是Page,如果是DataGrid,DataList等都可以
Response.Buffer=true;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "Response.ContentType";
//Response.ContentType是输出流的 HTTP MIME 类型
//Response.ContentType --- word文件
//application/vnd.ms-excel --- excel文件
Response.Charset="utf-8";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
Response.AddHeader("Content-Disposition", "attachment;filename=XXX.doc");
//attachment --- 作为附件下载
//inline --- 在线打开
//filename如过是中文,则可以用HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)进行编码,以解决文件名乱码的问题
Response.Write(SW.ToString());
Response.Flush();
Response.Close();
2.实现方法 列出.net实现导出Word、Exce格式文件调用的具体方法,代码如下:
}
调用方法:
ExpertControl(this, DocumentType.Word);
这是将整个页面导出为Word //this可以为具体的控件如datagrid/dataList或page表示当前页,DocumentType为导出的文件格式(Excel/word)
注意:当为datagrid或dataList控件时,在导出Excel/word文件时,必须把控件的分页、排序属性去除并重新绑定,否则将出现 "类型“DataGridLinkButton”的控件“DataGrid1__ctl14__ctl1”必须放在具有 runat=server 的窗体标记内。" 错误!
3.具体实例 为了让大家具体理解.net实现导出Word、Exce格式文件功能 ,下面贴出一个具体实例代码以供参考! 前台代码
<% @ Page language = " c# " Codebehind = " InSum.aspx.cs " AutoEventWireup = " false " Inherits = " FLX.Portal.InSum " %> <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.0 Transitional//EN " > < HTML > < HEAD > < title > InSum </ title > < meta name = " GENERATOR " Content = " Microsoft Visual Studio .NET 7.1 " > < meta name = " CODE_LANGUAGE " Content = " C# " > < meta name = " vs_defaultClientScript " content = " JavaScript " > < meta name = " vs_targetSchema " content = " http://schemas.microsoft.com/intellisense/ie5 " > </ HEAD > < body > < form id = " Form1 " method = " post " runat = " server " > < P > < asp:Label id = " Label1 " runat = " server " Font - Size = " 14px " Font - Bold = " True " > 输出形式: </ asp:Label > < asp:DropDownList id = " DDLOutPut " runat = " server " > < asp:ListItem Value = " Excel " > Excel </ asp:ListItem > < asp:ListItem Value = " Word " > Word </ asp:ListItem > </ asp:DropDownList > < asp:Button id = " BtnOutPut " runat = " server " Text = " 导出文件 " ></ asp:Button > < asp:datagrid id = " DataGrid1 " runat = " server " AutoGenerateColumns = " False " Width = " 100% " BorderColor = " #CCCCCC " BorderStyle= " None " BorderWidth = " 1px " BackColor = " White " CellPadding = " 3 " AllowPaging = " True " Font- Size = " 12px " ShowFooter = " True " > < FooterStyle ForeColor = " #000066 " BackColor = " White " ></ FooterStyle > < SelectedItemStyle Font - Bold = " True " ForeColor = " White " BackColor = " #669999 " ></ SelectedItemStyle > < ItemStyle ForeColor = " #000066 " BorderColor = " #D4D0C8 " ></ ItemStyle > < HeaderStyle ForeColor = " Black " BackColor = " #E1EEFE " ></ HeaderStyle > < Columns > < asp:BoundColumn DataField = " id " HeaderText = " id " ></ asp:BoundColumn > < asp:BoundColumn DataField = " count1 " HeaderText = " count1 " ></ asp:BoundColumn > < asp:BoundColumn DataField = " count2 " HeaderText = " count2 " ></ asp:BoundColumn > < asp:TemplateColumn HeaderText = " count3 " > < ItemTemplate > < asp:Label id = lblQuantity runat = " server " Text = ' <%# DataBinder.Eval(Container, "DataItem.count3") %> ' > </ asp:Label > </ ItemTemplate > </ asp:TemplateColumn > </ Columns > < PagerStyle HorizontalAlign = " Left " ForeColor = " #000066 " BackColor = " White " Mode = " NumericPages " ></ PagerStyle > </ asp:datagrid ></ P > </ form > </ body > </ HTML >
后台代码
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using FLX.Configuration; using System.Text; namespace FLX.Portal }
效果展示 1.导出Excel文件
2.导出Word文件
相关文章: