在做.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格式文件功能,下面贴出一个具体实例代码以供参考! 
    前台代码    
.net实现导出Word、Excel格式文件<%@ Page language="c#" Codebehind="InSum.aspx.cs" AutoEventWireup="false" Inherits="FLX.Portal.InSum" %>
.net实现导出Word、Excel格式文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
.net实现导出Word、Excel格式文件
<HTML>
.net实现导出Word、Excel格式文件    
<HEAD>
.net实现导出Word、Excel格式文件        
<title>InSum</title>
.net实现导出Word、Excel格式文件        
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
.net实现导出Word、Excel格式文件        
<meta name="CODE_LANGUAGE" Content="C#">
.net实现导出Word、Excel格式文件        
<meta name="vs_defaultClientScript" content="JavaScript">
.net实现导出Word、Excel格式文件        
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
.net实现导出Word、Excel格式文件    
</HEAD>
.net实现导出Word、Excel格式文件    
<body>
.net实现导出Word、Excel格式文件        
<form id="Form1" method="post" runat="server">
.net实现导出Word、Excel格式文件            
<P>
.net实现导出Word、Excel格式文件                
<asp:Label id="Label1" runat="server" Font-Size="14px" Font-Bold="True">输出形式:</asp:Label>
.net实现导出Word、Excel格式文件                
<asp:DropDownList id="DDLOutPut" runat="server">
.net实现导出Word、Excel格式文件                    
<asp:ListItem Value="Excel">Excel</asp:ListItem>
.net实现导出Word、Excel格式文件                    
<asp:ListItem Value="Word">Word</asp:ListItem>
.net实现导出Word、Excel格式文件                
</asp:DropDownList>
.net实现导出Word、Excel格式文件                
<asp:Button id="BtnOutPut" runat="server" Text="导出文件"></asp:Button>
.net实现导出Word、Excel格式文件                
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="100%" BorderColor="#CCCCCC"
.net实现导出Word、Excel格式文件                    BorderStyle
="None" BorderWidth="1px" BackColor="White" CellPadding="3" AllowPaging="True"
.net实现导出Word、Excel格式文件                    Font
-Size="12px" ShowFooter="True">
.net实现导出Word、Excel格式文件                    
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
.net实现导出Word、Excel格式文件                    
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
.net实现导出Word、Excel格式文件                    
<ItemStyle ForeColor="#000066" BorderColor="#D4D0C8"></ItemStyle>
.net实现导出Word、Excel格式文件                    
<HeaderStyle ForeColor="Black" BackColor="#E1EEFE"></HeaderStyle>
.net实现导出Word、Excel格式文件                    
<Columns>
.net实现导出Word、Excel格式文件                        
<asp:BoundColumn DataField="id" HeaderText="id"></asp:BoundColumn>
.net实现导出Word、Excel格式文件                        
<asp:BoundColumn DataField="count1" HeaderText="count1"></asp:BoundColumn>
.net实现导出Word、Excel格式文件                        
<asp:BoundColumn DataField="count2" HeaderText="count2"></asp:BoundColumn>
.net实现导出Word、Excel格式文件                        
<asp:TemplateColumn HeaderText="count3">
.net实现导出Word、Excel格式文件                            
<ItemTemplate>
.net实现导出Word、Excel格式文件                                
<asp:Label id=lblQuantity runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.count3") %>'>
.net实现导出Word、Excel格式文件                                
</asp:Label>
.net实现导出Word、Excel格式文件                            
</ItemTemplate>
.net实现导出Word、Excel格式文件                        
</asp:TemplateColumn>
.net实现导出Word、Excel格式文件                    
</Columns>
.net实现导出Word、Excel格式文件                    
<PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
.net实现导出Word、Excel格式文件                
</asp:datagrid></P>
.net实现导出Word、Excel格式文件        
</form>
.net实现导出Word、Excel格式文件    
</body>
.net实现导出Word、Excel格式文件
</HTML>
.net实现导出Word、Excel格式文件
    后台代码    
.net实现导出Word、Excel格式文件using System;
.net实现导出Word、Excel格式文件
using System.Collections;
.net实现导出Word、Excel格式文件
using System.ComponentModel;
.net实现导出Word、Excel格式文件
using System.Data;
.net实现导出Word、Excel格式文件
using System.Drawing;
.net实现导出Word、Excel格式文件
using System.Web;
.net实现导出Word、Excel格式文件
using System.Web.SessionState;
.net实现导出Word、Excel格式文件
using System.Web.UI;
.net实现导出Word、Excel格式文件
using System.Web.UI.WebControls;
.net实现导出Word、Excel格式文件
using System.Web.UI.HtmlControls;
.net实现导出Word、Excel格式文件
using FLX.Configuration;
.net实现导出Word、Excel格式文件
using System.Text;
.net实现导出Word、Excel格式文件
.net实现导出Word、Excel格式文件
namespace FLX.Portal
}
    效果展示
    1.导出Excel文件
.net实现导出Word、Excel格式文件
    2.导出Word文件
.net实现导出Word、Excel格式文件

相关文章: