将ASP.Net 2.0下的GridView导出为Excel.

简介:

在本文中我们将具体介绍如何将ASP.Net 2.0下的GridView导出为Excel.

本文的焦点是Gridview导为Excel功能和它的数据绑定只出口示范功能.

本文代码可以用来导出为Excel的功能但不局限于这个部分,还可以在很多项目中使用。

 

Step 1: Setup your web page with the Gridview

这里我假定你满足:在一个页面中有个名为GridView1GridView。在GridView中我们绑定了一个名为ContactPhoneSQL数据库。接下来的代码就是如何将GridView导出为Excel并且不依赖于具体的数据绑定还具有场景自改变能力。

ContactPhone Table Structure:

Column Name

Type

ContactID

Int (Identity)

FName

Varchar(50)

LName

Varchar(50)

ContactPhone

Varchar(20)

Step: The Actual Export

这段代码是直接输出为Excel的,你也可以改变content-dispositionContentType以输出不同的类型。

 

 1 将ASP.Net 2.0下的GridView导出为Excel. string  attachment  =  " attachment; filename=Contacts.xls " ;
 2 将ASP.Net 2.0下的GridView导出为Excel.
 3 将ASP.Net 2.0下的GridView导出为Excel.Response.ClearContent();
 4 将ASP.Net 2.0下的GridView导出为Excel.
 5 将ASP.Net 2.0下的GridView导出为Excel.Response.AddHeader( " content-disposition " , attachment);
 6 将ASP.Net 2.0下的GridView导出为Excel.
 7 将ASP.Net 2.0下的GridView导出为Excel.Response.ContentType  =  " application/ms-excel " ;
 8 将ASP.Net 2.0下的GridView导出为Excel.
 9 将ASP.Net 2.0下的GridView导出为Excel.StringWriter sw  =  new  StringWriter();
10 将ASP.Net 2.0下的GridView导出为Excel.
11 将ASP.Net 2.0下的GridView导出为Excel.HtmlTextWriter htw  =  new  HtmlTextWriter(sw);
12 将ASP.Net 2.0下的GridView导出为Excel.
13 将ASP.Net 2.0下的GridView导出为Excel.GridView1.RenderControl(htw);
14 将ASP.Net 2.0下的GridView导出为Excel.
15 将ASP.Net 2.0下的GridView导出为Excel.Response.Write(sw.ToString());
16 将ASP.Net 2.0下的GridView导出为Excel.
17 将ASP.Net 2.0下的GridView导出为Excel.Response.End(); 
18 将ASP.Net 2.0下的GridView导出为Excel.
19 将ASP.Net 2.0下的GridView导出为Excel.



如果你运行以上代码,将返回一个HttpException

'GridView1'是一个类型为'GridView'的控件,必须为其添加一个runat=server标记.

为避免这个错误,我们添加以下代码:

 

1 将ASP.Net 2.0下的GridView导出为Excel. public  override  void  VerifyRenderingInServerForm(Control control)
2 将ASP.Net 2.0下的GridView导出为Excel.
3 将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel. 将ASP.Net 2.0下的GridView导出为Excel. {
4将ASP.Net 2.0下的GridView导出为Excel.
5将ASP.Net 2.0下的GridView导出为Excel.}

6 将ASP.Net 2.0下的GridView导出为Excel.

 

Step : Convert the contents

如果GridView中有其它控件,比如CheckboxesDropdownlists,我们需要将它转换为其相关的值,以下递归就用于导出Excel前的准备工作,将各类控件转换为其相关值.

 

 1 将ASP.Net 2.0下的GridView导出为Excel. private  void  PrepareGridViewForExport(Control gv)
 2 将ASP.Net 2.0下的GridView导出为Excel.
 3 将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel. 将ASP.Net 2.0下的GridView导出为Excel. {
 4将ASP.Net 2.0下的GridView导出为Excel.
 5将ASP.Net 2.0下的GridView导出为Excel.    LinkButton lb = new LinkButton();
 6将ASP.Net 2.0下的GridView导出为Excel.
 7将ASP.Net 2.0下的GridView导出为Excel.    Literal l = new Literal();
 8将ASP.Net 2.0下的GridView导出为Excel.
 9将ASP.Net 2.0下的GridView导出为Excel.    string name = String.Empty;
10将ASP.Net 2.0下的GridView导出为Excel.
11将ASP.Net 2.0下的GridView导出为Excel.    for (int i = 0; i < gv.Controls.Count; i++)
12将ASP.Net 2.0下的GridView导出为Excel.
13将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.    将ASP.Net 2.0下的GridView导出为Excel.{
14将ASP.Net 2.0下的GridView导出为Excel.
15将ASP.Net 2.0下的GridView导出为Excel.        if (gv.Controls[i].GetType() == typeof(LinkButton))
16将ASP.Net 2.0下的GridView导出为Excel.
17将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.        将ASP.Net 2.0下的GridView导出为Excel.{
18将ASP.Net 2.0下的GridView导出为Excel.
19将ASP.Net 2.0下的GridView导出为Excel.            l.Text = (gv.Controls[i] as LinkButton).Text;
20将ASP.Net 2.0下的GridView导出为Excel.
21将ASP.Net 2.0下的GridView导出为Excel. gv.Controls.Remove(gv.Controls[i]);
22将ASP.Net 2.0下的GridView导出为Excel.
23将ASP.Net 2.0下的GridView导出为Excel. gv.Controls.AddAt(i, l);
24将ASP.Net 2.0下的GridView导出为Excel.
25将ASP.Net 2.0下的GridView导出为Excel.        }

26将ASP.Net 2.0下的GridView导出为Excel.
27将ASP.Net 2.0下的GridView导出为Excel.        else if (gv.Controls[i].GetType() == typeof(DropDownList))
28将ASP.Net 2.0下的GridView导出为Excel.
29将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.        将ASP.Net 2.0下的GridView导出为Excel.{
30将ASP.Net 2.0下的GridView导出为Excel.
31将ASP.Net 2.0下的GridView导出为Excel.            l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
32将ASP.Net 2.0下的GridView导出为Excel.
33将ASP.Net 2.0下的GridView导出为Excel.            gv.Controls.Remove(gv.Controls[i]);
34将ASP.Net 2.0下的GridView导出为Excel.
35将ASP.Net 2.0下的GridView导出为Excel.            gv.Controls.AddAt(i, l);
36将ASP.Net 2.0下的GridView导出为Excel.
37将ASP.Net 2.0下的GridView导出为Excel.        }

38将ASP.Net 2.0下的GridView导出为Excel.
39将ASP.Net 2.0下的GridView导出为Excel.        else if (gv.Controls[i].GetType() == typeof(CheckBox))
40将ASP.Net 2.0下的GridView导出为Excel.
41将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.        将ASP.Net 2.0下的GridView导出为Excel.{
42将ASP.Net 2.0下的GridView导出为Excel.
43将ASP.Net 2.0下的GridView导出为Excel.            l.Text = (gv.Controls[i] as CheckBox).Checked? "True" : "False";
44将ASP.Net 2.0下的GridView导出为Excel.
45将ASP.Net 2.0下的GridView导出为Excel.            gv.Controls.Remove(gv.Controls[i]);
46将ASP.Net 2.0下的GridView导出为Excel.
47将ASP.Net 2.0下的GridView导出为Excel.            gv.Controls.AddAt(i, l);
48将ASP.Net 2.0下的GridView导出为Excel.
49将ASP.Net 2.0下的GridView导出为Excel.        }

50将ASP.Net 2.0下的GridView导出为Excel.
51将ASP.Net 2.0下的GridView导出为Excel.        if (gv.Controls[i].HasControls())
52将ASP.Net 2.0下的GridView导出为Excel.
53将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.        将ASP.Net 2.0下的GridView导出为Excel.{
54将ASP.Net 2.0下的GridView导出为Excel.
55将ASP.Net 2.0下的GridView导出为Excel.            PrepareGridViewForExport(gv.Controls[i]);
56将ASP.Net 2.0下的GridView导出为Excel.
57将ASP.Net 2.0下的GridView导出为Excel.        }

58将ASP.Net 2.0下的GridView导出为Excel.
59将ASP.Net 2.0下的GridView导出为Excel.}

60将ASP.Net 2.0下的GridView导出为Excel.
61将ASP.Net 2.0下的GridView导出为Excel.

Code Listing:

Image: Page Design
将ASP.Net 2.0下的GridView导出为Excel.

Image : Sample in action

将ASP.Net 2.0下的GridView导出为Excel.

Image: Export to Excel button is clicked
将ASP.Net 2.0下的GridView导出为Excel.

Image: GridView contents exported to Excel

将ASP.Net 2.0下的GridView导出为Excel.


 

ExcelExport.aspx

将ASP.Net 2.0下的GridView导出为Excel. 将ASP.Net 2.0下的GridView导出为Excel.
  1将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.<%将ASP.Net 2.0下的GridView导出为Excel.@ Page Language="C#" AutoEventWireup="true" CodeFile="ExportExcel.aspx.cs" Inherits="DeleteConfirm" %>
  2将ASP.Net 2.0下的GridView导出为Excel.
  3将ASP.Net 2.0下的GridView导出为Excel. 
  4将ASP.Net 2.0下的GridView导出为Excel.
  5将ASP.Net 2.0下的GridView导出为Excel.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6将ASP.Net 2.0下的GridView导出为Excel.
  7将ASP.Net 2.0下的GridView导出为Excel. 
  8将ASP.Net 2.0下的GridView导出为Excel.
  9将ASP.Net 2.0下的GridView导出为Excel.<html xmlns="http://www.w3.org/1999/xhtml" >
 10将ASP.Net 2.0下的GridView导出为Excel.
 11将ASP.Net 2.0下的GridView导出为Excel.<head runat="server">
 12将ASP.Net 2.0下的GridView导出为Excel.
 13将ASP.Net 2.0下的GridView导出为Excel.<title>Contacts Listing</title>
 14将ASP.Net 2.0下的GridView导出为Excel.
 15将ASP.Net 2.0下的GridView导出为Excel.</head>
 16将ASP.Net 2.0下的GridView导出为Excel.
 17将ASP.Net 2.0下的GridView导出为Excel.<body>
 18将ASP.Net 2.0下的GridView导出为Excel.
 19将ASP.Net 2.0下的GridView导出为Excel.<form id="form1" runat="server">
 20将ASP.Net 2.0下的GridView导出为Excel.
 21将ASP.Net 2.0下的GridView导出为Excel.<div>
 22将ASP.Net 2.0下的GridView导出为Excel.
 23将ASP.Net 2.0下的GridView导出为Excel.<strong><span style="font-size: small; font-family: Arial; text-decoration: underline">
 24将ASP.Net 2.0下的GridView导出为Excel.
 25将ASP.Net 2.0下的GridView导出为Excel.Contacts Listing 
 26将ASP.Net 2.0下的GridView导出为Excel.
 27将ASP.Net 2.0下的GridView导出为Excel.    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Export To Excel" /></span></strong><br />
 28将ASP.Net 2.0下的GridView导出为Excel.
 29将ASP.Net 2.0下的GridView导出为Excel.<br />
 30将ASP.Net 2.0下的GridView导出为Excel.
 31将ASP.Net 2.0下的GridView导出为Excel.<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ContactID"
 32将ASP.Net 2.0下的GridView导出为Excel.
 33将ASP.Net 2.0下的GridView导出为Excel.DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display." style="font-size: small; font-family: Arial" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical">
 34将ASP.Net 2.0下的GridView导出为Excel.
 35将ASP.Net 2.0下的GridView导出为Excel.<Columns>
 36将ASP.Net 2.0下的GridView导出为Excel.
 37将ASP.Net 2.0下的GridView导出为Excel.<asp:BoundField DataField="ContactID" HeaderText="ContactID" ReadOnly="True" SortExpression="ContactID" Visible="False" />
 38将ASP.Net 2.0下的GridView导出为Excel.
 39将ASP.Net 2.0下的GridView导出为Excel.<asp:BoundField DataField="FName" HeaderText="First Name" SortExpression="FName" />
 40将ASP.Net 2.0下的GridView导出为Excel.
 41将ASP.Net 2.0下的GridView导出为Excel.<asp:BoundField DataField="LName" HeaderText="Last Name" SortExpression="LName" />
 42将ASP.Net 2.0下的GridView导出为Excel.
 43将ASP.Net 2.0下的GridView导出为Excel.<asp:BoundField DataField="ContactPhone" HeaderText="Phone" SortExpression="ContactPhone" />
 44将ASP.Net 2.0下的GridView导出为Excel.
 45将ASP.Net 2.0下的GridView导出为Excel.<asp:TemplateField HeaderText="Favorites">
 46将ASP.Net 2.0下的GridView导出为Excel.
 47将ASP.Net 2.0下的GridView导出为Excel.<ItemTemplate>
 48将ASP.Net 2.0下的GridView导出为Excel.
 49将ASP.Net 2.0下的GridView导出为Excel.    &nbsp;
 50将ASP.Net 2.0下的GridView导出为Excel.
 51将ASP.Net 2.0下的GridView导出为Excel.    <asp:CheckBox ID="CheckBox1" runat="server" />
 52将ASP.Net 2.0下的GridView导出为Excel.
 53将ASP.Net 2.0下的GridView导出为Excel.</ItemTemplate></asp:TemplateField>
 54将ASP.Net 2.0下的GridView导出为Excel.
 55将ASP.Net 2.0下的GridView导出为Excel.</Columns>
 56将ASP.Net 2.0下的GridView导出为Excel.
 57将ASP.Net 2.0下的GridView导出为Excel.<FooterStyle BackColor="#CCCC99" />
 58将ASP.Net 2.0下的GridView导出为Excel.
 59将ASP.Net 2.0下的GridView导出为Excel.<RowStyle BackColor="#F7F7DE" />
 60将ASP.Net 2.0下的GridView导出为Excel.
 61将ASP.Net 2.0下的GridView导出为Excel.<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
 62将ASP.Net 2.0下的GridView导出为Excel.
 63将ASP.Net 2.0下的GridView导出为Excel.<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
 64将ASP.Net 2.0下的GridView导出为Excel.
 65将ASP.Net 2.0下的GridView导出为Excel.<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
 66将ASP.Net 2.0下的GridView导出为Excel.
 67将ASP.Net 2.0下的GridView导出为Excel.<AlternatingRowStyle BackColor="White" />
 68将ASP.Net 2.0下的GridView导出为Excel.
 69将ASP.Net 2.0下的GridView导出为Excel.</asp:GridView>
 70将ASP.Net 2.0下的GridView导出为Excel.
 71将ASP.Net 2.0下的GridView导出为Excel. 
 72将ASP.Net 2.0下的GridView导出为Excel.
 73将ASP.Net 2.0下的GridView导出为Excel.<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ContactsConnectionString1 %>"
 74将ASP.Net 2.0下的GridView导出为Excel.
 75将ASP.Net 2.0下的GridView导出为Excel.DeleteCommand="DELETE FROM [ContactPhone] WHERE [ContactID] = @ContactID" InsertCommand="INSERT INTO [ContactPhone] ([FName], [LName], [ContactPhone]) VALUES (@FName, @LName, @ContactPhone)"
 76将ASP.Net 2.0下的GridView导出为Excel.
 77将ASP.Net 2.0下的GridView导出为Excel.ProviderName="<%$ ConnectionStrings:ContactsConnectionString1.ProviderName %>"
 78将ASP.Net 2.0下的GridView导出为Excel.
 79将ASP.Net 2.0下的GridView导出为Excel.SelectCommand="SELECT [ContactID], [FName], [LName], [ContactPhone] FROM [ContactPhone]"
 80将ASP.Net 2.0下的GridView导出为Excel.
 81将ASP.Net 2.0下的GridView导出为Excel.UpdateCommand="UPDATE [ContactPhone] SET [FName] = @FName, [LName] = @LName, [ContactPhone] = @ContactPhone WHERE [ContactID] = @ContactID">
 82将ASP.Net 2.0下的GridView导出为Excel.
 83将ASP.Net 2.0下的GridView导出为Excel.<InsertParameters>
 84将ASP.Net 2.0下的GridView导出为Excel.
 85将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="FName" Type="String" />
 86将ASP.Net 2.0下的GridView导出为Excel.
 87将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="LName" Type="String" />
 88将ASP.Net 2.0下的GridView导出为Excel.
 89将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="ContactPhone" Type="String" />
 90将ASP.Net 2.0下的GridView导出为Excel.
 91将ASP.Net 2.0下的GridView导出为Excel.</InsertParameters>
 92将ASP.Net 2.0下的GridView导出为Excel.
 93将ASP.Net 2.0下的GridView导出为Excel.<UpdateParameters>
 94将ASP.Net 2.0下的GridView导出为Excel.
 95将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="FName" Type="String" />
 96将ASP.Net 2.0下的GridView导出为Excel.
 97将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="LName" Type="String" />
 98将ASP.Net 2.0下的GridView导出为Excel.
 99将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="ContactPhone" Type="String" />
100将ASP.Net 2.0下的GridView导出为Excel.
101将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="ContactID" Type="Int32" />
102将ASP.Net 2.0下的GridView导出为Excel.
103将ASP.Net 2.0下的GridView导出为Excel.</UpdateParameters>
104将ASP.Net 2.0下的GridView导出为Excel.
105将ASP.Net 2.0下的GridView导出为Excel.<DeleteParameters>
106将ASP.Net 2.0下的GridView导出为Excel.
107将ASP.Net 2.0下的GridView导出为Excel.<asp:Parameter Name="ContactID" Type="Int32" />
108将ASP.Net 2.0下的GridView导出为Excel.
109将ASP.Net 2.0下的GridView导出为Excel.</DeleteParameters>
110将ASP.Net 2.0下的GridView导出为Excel.
111将ASP.Net 2.0下的GridView导出为Excel.</asp:SqlDataSource>
112将ASP.Net 2.0下的GridView导出为Excel.
113将ASP.Net 2.0下的GridView导出为Excel.&nbsp;
114将ASP.Net 2.0下的GridView导出为Excel.
115将ASP.Net 2.0下的GridView导出为Excel.<br />
116将ASP.Net 2.0下的GridView导出为Excel.
117将ASP.Net 2.0下的GridView导出为Excel.</div>
118将ASP.Net 2.0下的GridView导出为Excel.
119将ASP.Net 2.0下的GridView导出为Excel.</form>
120将ASP.Net 2.0下的GridView导出为Excel.
121将ASP.Net 2.0下的GridView导出为Excel.</body>
122将ASP.Net 2.0下的GridView导出为Excel.
123将ASP.Net 2.0下的GridView导出为Excel.</html>
124将ASP.Net 2.0下的GridView导出为Excel.
125将ASP.Net 2.0下的GridView导出为Excel.




ExcelExport.aspx.cs 

将ASP.Net 2.0下的GridView导出为Excel. 将ASP.Net 2.0下的GridView导出为Excel.
  1将ASP.Net 2.0下的GridView导出为Excel.using System;
  2将ASP.Net 2.0下的GridView导出为Excel.
  3将ASP.Net 2.0下的GridView导出为Excel.using System.Data;
  4将ASP.Net 2.0下的GridView导出为Excel.
  5将ASP.Net 2.0下的GridView导出为Excel.using System.Configuration;
  6将ASP.Net 2.0下的GridView导出为Excel.
  7将ASP.Net 2.0下的GridView导出为Excel.using System.Collections;
  8将ASP.Net 2.0下的GridView导出为Excel.
  9将ASP.Net 2.0下的GridView导出为Excel.using System.Web;
 10将ASP.Net 2.0下的GridView导出为Excel.
 11将ASP.Net 2.0下的GridView导出为Excel.using System.Web.Security;
 12将ASP.Net 2.0下的GridView导出为Excel.
 13将ASP.Net 2.0下的GridView导出为Excel.using System.Web.UI;
 14将ASP.Net 2.0下的GridView导出为Excel.
 15将ASP.Net 2.0下的GridView导出为Excel.using System.Web.UI.WebControls;
 16将ASP.Net 2.0下的GridView导出为Excel.
 17将ASP.Net 2.0下的GridView导出为Excel.using System.Web.UI.WebControls.WebParts;
 18将ASP.Net 2.0下的GridView导出为Excel.
 19将ASP.Net 2.0下的GridView导出为Excel.using System.Web.UI.HtmlControls;
 20将ASP.Net 2.0下的GridView导出为Excel.
 21将ASP.Net 2.0下的GridView导出为Excel.using System.Text;
 22将ASP.Net 2.0下的GridView导出为Excel.
 23将ASP.Net 2.0下的GridView导出为Excel.using System.IO;
 24将ASP.Net 2.0下的GridView导出为Excel.
 25将ASP.Net 2.0下的GridView导出为Excel. 
 26将ASP.Net 2.0下的GridView导出为Excel.
 27将ASP.Net 2.0下的GridView导出为Excel.public partial class DeleteConfirm : System.Web.UI.Page
 28将ASP.Net 2.0下的GridView导出为Excel.
 29将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.{
 30将ASP.Net 2.0下的GridView导出为Excel.
 31将ASP.Net 2.0下的GridView导出为Excel. 
 32将ASP.Net 2.0下的GridView导出为Excel.
 33将ASP.Net 2.0下的GridView导出为Excel.    protected void Page_Load(object sender, EventArgs e)
 34将ASP.Net 2.0下的GridView导出为Excel.
 35将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.    将ASP.Net 2.0下的GridView导出为Excel.{
 36将ASP.Net 2.0下的GridView导出为Excel.
 37将ASP.Net 2.0下的GridView导出为Excel.    }

 38将ASP.Net 2.0下的GridView导出为Excel.
 39将ASP.Net 2.0下的GridView导出为Excel. 
 40将ASP.Net 2.0下的GridView导出为Excel.
 41将ASP.Net 2.0下的GridView导出为Excel.    protected void Button1_Click(object sender, EventArgs e)
 42将ASP.Net 2.0下的GridView导出为Excel.
 43将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.    将ASP.Net 2.0下的GridView导出为Excel.{
 44将ASP.Net 2.0下的GridView导出为Excel.
 45将ASP.Net 2.0下的GridView导出为Excel.        //Export the GridView to Excel
 46将ASP.Net 2.0下的GridView导出为Excel.
 47将ASP.Net 2.0下的GridView导出为Excel.        PrepareGridViewForExport(GridView1);
 48将ASP.Net 2.0下的GridView导出为Excel.
 49将ASP.Net 2.0下的GridView导出为Excel.        ExportGridView();
 50将ASP.Net 2.0下的GridView导出为Excel.
 51将ASP.Net 2.0下的GridView导出为Excel.    }

 52将ASP.Net 2.0下的GridView导出为Excel.
 53将ASP.Net 2.0下的GridView导出为Excel. 
 54将ASP.Net 2.0下的GridView导出为Excel.
 55将ASP.Net 2.0下的GridView导出为Excel.    private void ExportGridView()
 56将ASP.Net 2.0下的GridView导出为Excel.
 57将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.    将ASP.Net 2.0下的GridView导出为Excel.{
 58将ASP.Net 2.0下的GridView导出为Excel.
 59将ASP.Net 2.0下的GridView导出为Excel.        string attachment = "attachment; filename=Contacts.xls";
 60将ASP.Net 2.0下的GridView导出为Excel.
 61将ASP.Net 2.0下的GridView导出为Excel.        Response.ClearContent();
 62将ASP.Net 2.0下的GridView导出为Excel.
 63将ASP.Net 2.0下的GridView导出为Excel.        Response.AddHeader("content-disposition", attachment);
 64将ASP.Net 2.0下的GridView导出为Excel.
 65将ASP.Net 2.0下的GridView导出为Excel.        Response.ContentType = "application/ms-excel";
 66将ASP.Net 2.0下的GridView导出为Excel.
 67将ASP.Net 2.0下的GridView导出为Excel.        StringWriter sw = new StringWriter();
 68将ASP.Net 2.0下的GridView导出为Excel.
 69将ASP.Net 2.0下的GridView导出为Excel.        HtmlTextWriter htw = new HtmlTextWriter(sw);
 70将ASP.Net 2.0下的GridView导出为Excel.
 71将ASP.Net 2.0下的GridView导出为Excel.        GridView1.RenderControl(htw);
 72将ASP.Net 2.0下的GridView导出为Excel.
 73将ASP.Net 2.0下的GridView导出为Excel.        Response.Write(sw.ToString());
 74将ASP.Net 2.0下的GridView导出为Excel.
 75将ASP.Net 2.0下的GridView导出为Excel.        Response.End();
 76将ASP.Net 2.0下的GridView导出为Excel.
 77将ASP.Net 2.0下的GridView导出为Excel.    }

 78将ASP.Net 2.0下的GridView导出为Excel.
 79将ASP.Net 2.0下的GridView导出为Excel. 
 80将ASP.Net 2.0下的GridView导出为Excel.
 81将ASP.Net 2.0下的GridView导出为Excel.    public override void VerifyRenderingInServerForm(Control control)
 82将ASP.Net 2.0下的GridView导出为Excel.
 83将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.    将ASP.Net 2.0下的GridView导出为Excel.{
 84将ASP.Net 2.0下的GridView导出为Excel.
 85将ASP.Net 2.0下的GridView导出为Excel.    }

 86将ASP.Net 2.0下的GridView导出为Excel.
 87将ASP.Net 2.0下的GridView导出为Excel. 
 88将ASP.Net 2.0下的GridView导出为Excel.
 89将ASP.Net 2.0下的GridView导出为Excel.    private void PrepareGridViewForExport(Control gv)
 90将ASP.Net 2.0下的GridView导出为Excel.
 91将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.    将ASP.Net 2.0下的GridView导出为Excel.{
 92将ASP.Net 2.0下的GridView导出为Excel.
 93将ASP.Net 2.0下的GridView导出为Excel.        LinkButton lb = new LinkButton();
 94将ASP.Net 2.0下的GridView导出为Excel.
 95将ASP.Net 2.0下的GridView导出为Excel.        Literal l = new Literal();
 96将ASP.Net 2.0下的GridView导出为Excel.
 97将ASP.Net 2.0下的GridView导出为Excel.        string name = String.Empty;
 98将ASP.Net 2.0下的GridView导出为Excel.
 99将ASP.Net 2.0下的GridView导出为Excel.        for (int i = 0; i < gv.Controls.Count; i++)
100将ASP.Net 2.0下的GridView导出为Excel.
101将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.        将ASP.Net 2.0下的GridView导出为Excel.{
102将ASP.Net 2.0下的GridView导出为Excel.
103将ASP.Net 2.0下的GridView导出为Excel.            if (gv.Controls[i].GetType() == typeof(LinkButton))
104将ASP.Net 2.0下的GridView导出为Excel.
105将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.            将ASP.Net 2.0下的GridView导出为Excel.{
106将ASP.Net 2.0下的GridView导出为Excel.
107将ASP.Net 2.0下的GridView导出为Excel.                l.Text = (gv.Controls[i] as LinkButton).Text;
108将ASP.Net 2.0下的GridView导出为Excel.
109将ASP.Net 2.0下的GridView导出为Excel.                gv.Controls.Remove(gv.Controls[i]);
110将ASP.Net 2.0下的GridView导出为Excel.
111将ASP.Net 2.0下的GridView导出为Excel.                gv.Controls.AddAt(i, l);
112将ASP.Net 2.0下的GridView导出为Excel.
113将ASP.Net 2.0下的GridView导出为Excel.            }

114将ASP.Net 2.0下的GridView导出为Excel.
115将ASP.Net 2.0下的GridView导出为Excel.            else if (gv.Controls[i].GetType() == typeof(DropDownList))
116将ASP.Net 2.0下的GridView导出为Excel.
117将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.            将ASP.Net 2.0下的GridView导出为Excel.{
118将ASP.Net 2.0下的GridView导出为Excel.
119将ASP.Net 2.0下的GridView导出为Excel.                l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
120将ASP.Net 2.0下的GridView导出为Excel.
121将ASP.Net 2.0下的GridView导出为Excel.                gv.Controls.Remove(gv.Controls[i]);
122将ASP.Net 2.0下的GridView导出为Excel.
123将ASP.Net 2.0下的GridView导出为Excel.                gv.Controls.AddAt(i, l);
124将ASP.Net 2.0下的GridView导出为Excel.
125将ASP.Net 2.0下的GridView导出为Excel.            }

126将ASP.Net 2.0下的GridView导出为Excel.
127将ASP.Net 2.0下的GridView导出为Excel.            else if (gv.Controls[i].GetType() == typeof(CheckBox))
128将ASP.Net 2.0下的GridView导出为Excel.
129将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.            将ASP.Net 2.0下的GridView导出为Excel.{
130将ASP.Net 2.0下的GridView导出为Excel.
131将ASP.Net 2.0下的GridView导出为Excel.                l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False";
132将ASP.Net 2.0下的GridView导出为Excel.
133将ASP.Net 2.0下的GridView导出为Excel.                gv.Controls.Remove(gv.Controls[i]);
134将ASP.Net 2.0下的GridView导出为Excel.
135将ASP.Net 2.0下的GridView导出为Excel.                gv.Controls.AddAt(i, l);
136将ASP.Net 2.0下的GridView导出为Excel.
137将ASP.Net 2.0下的GridView导出为Excel.            }

138将ASP.Net 2.0下的GridView导出为Excel.
139将ASP.Net 2.0下的GridView导出为Excel.            if (gv.Controls[i].HasControls())
140将ASP.Net 2.0下的GridView导出为Excel.
141将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel.            将ASP.Net 2.0下的GridView导出为Excel.{
142将ASP.Net 2.0下的GridView导出为Excel.
143将ASP.Net 2.0下的GridView导出为Excel.                PrepareGridViewForExport(gv.Controls[i]);
144将ASP.Net 2.0下的GridView导出为Excel.
145将ASP.Net 2.0下的GridView导出为Excel.            }

146将ASP.Net 2.0下的GridView导出为Excel.
147将ASP.Net 2.0下的GridView导出为Excel.        }

148将ASP.Net 2.0下的GridView导出为Excel.
149将ASP.Net 2.0下的GridView导出为Excel.    }

150将ASP.Net 2.0下的GridView导出为Excel.
151将ASP.Net 2.0下的GridView导出为Excel.}

152将ASP.Net 2.0下的GridView导出为Excel.
153将ASP.Net 2.0下的GridView导出为Excel.

 

 

Implementation Options:

 

通常情况,在输出函数中开发人员都会面临一个错误,典型的就是"RegisterForEventValidation can only be called during Render();"

 

访问者通常会在评论中提出一些好的建议.我特别要强调的是开发者需要重写VerifyRenderingInServerForm方法,该方法描述如下:

  • Step 1:实现导出功能的上述功能.
  • Step 2:重写一个VerifyRenderingInServerForm的空方法.
  • Step 3:修改ExportGridView函数,在绿色高亮代码部创建HtmlForm【原句为:The code highlighted in green creates and HtmlForm on the fly,在翻译HtmlForm on the fly时遇到了一些困难,on the fly未翻译,请各位高手指教】,在导出girdview之前,添加gridview 到新的form并且render它(取代原来的render实现)

 

 1 将ASP.Net 2.0下的GridView导出为Excel. private  void  ExportGridView()
 2 将ASP.Net 2.0下的GridView导出为Excel.
 3 将ASP.Net 2.0下的GridView导出为Excel.将ASP.Net 2.0下的GridView导出为Excel. 将ASP.Net 2.0下的GridView导出为Excel. {
 4将ASP.Net 2.0下的GridView导出为Excel.
 5将ASP.Net 2.0下的GridView导出为Excel.      string attachment = "attachment; filename=Contacts.xls";
 6将ASP.Net 2.0下的GridView导出为Excel.
 7将ASP.Net 2.0下的GridView导出为Excel.      Response.ClearContent();
 8将ASP.Net 2.0下的GridView导出为Excel.
 9将ASP.Net 2.0下的GridView导出为Excel.      Response.AddHeader("content-disposition", attachment);
10将ASP.Net 2.0下的GridView导出为Excel.
11将ASP.Net 2.0下的GridView导出为Excel.      Response.ContentType = "application/ms-excel";
12将ASP.Net 2.0下的GridView导出为Excel.
13将ASP.Net 2.0下的GridView导出为Excel.      StringWriter sw = new StringWriter();
14将ASP.Net 2.0下的GridView导出为Excel.
15将ASP.Net 2.0下的GridView导出为Excel.      HtmlTextWriter htw = new HtmlTextWriter(sw);
16将ASP.Net 2.0下的GridView导出为Excel.
17将ASP.Net 2.0下的GridView导出为Excel. 
18将ASP.Net 2.0下的GridView导出为Excel.
19将ASP.Net 2.0下的GridView导出为Excel.      // Create a form to contain the grid
20将ASP.Net 2.0下的GridView导出为Excel.
21将ASP.Net 2.0下的GridView导出为Excel.      HtmlForm frm = new HtmlForm();
22将ASP.Net 2.0下的GridView导出为Excel.
23将ASP.Net 2.0下的GridView导出为Excel.      GridView1.Parent.Controls.Add(frm);
24将ASP.Net 2.0下的GridView导出为Excel.
25将ASP.Net 2.0下的GridView导出为Excel.      frm.Attributes["runat"= "server";
26将ASP.Net 2.0下的GridView导出为Excel.
27将ASP.Net 2.0下的GridView导出为Excel.      frm.Controls.Add(GridView1);
28将ASP.Net 2.0下的GridView导出为Excel.
29将ASP.Net 2.0下的GridView导出为Excel. 
30将ASP.Net 2.0下的GridView导出为Excel.
31将ASP.Net 2.0下的GridView导出为Excel.      frm.RenderControl(htw);
32将ASP.Net 2.0下的GridView导出为Excel.
33将ASP.Net 2.0下的GridView导出为Excel.      //GridView1.RenderControl(htw);
34将ASP.Net 2.0下的GridView导出为Excel.
35将ASP.Net 2.0下的GridView导出为Excel.      Response.Write(sw.ToString());
36将ASP.Net 2.0下的GridView导出为Excel.
37将ASP.Net 2.0下的GridView导出为Excel.      Response.End();
38将ASP.Net 2.0下的GridView导出为Excel.
39将ASP.Net 2.0下的GridView导出为Excel.}

40 将ASP.Net 2.0下的GridView导出为Excel.
41 将ASP.Net 2.0下的GridView导出为Excel.

 

这样实施有个优势,就是可将其设置为复用代码类库,不用每次去复写基类的方法.

 

Note to readers:

Thank you for your comments and feedback! Happy coding!!!

 

ASP.Net 2.0: Export GridView to Excel - Part II

该文中将会在导出Excel GridView引入Hyperlink,以至于需要使用更多的反射来重新设计原来的逻辑.


你可能感兴趣的:(GridView)