使用ASP.NET的GridView滙出/儲存資料至Excel,Word,Txt檔
最近剛好有人討論到這個問題...
小弟到網路上找了一下資料...其實還滿多資料的...
小弟做了一個簡單的範例..如何由GridView匯出資料至excel,word,txt
ps.註解的部分屬於儲存檔案的程式碼
excel.aspx
01 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="excel.aspx.cs" Inherits="excel" %>
02
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml">
05 <head id="Head1" runat="server">
06 <title>未命名頁面</title>
07 </head>
08 <body>
09 <form id="form1" runat="server">
10 <div>
11 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
12 <Columns>
13 <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
14 SortExpression="id" />
15 <asp:BoundField DataField="gender" HeaderText="gender" SortExpression="gender" />
16 </Columns>
17 </asp:GridView>
18 <asp:Button ID="ExportExcel" runat="server" Text="匯出Excel檔/儲存Excel檔" OnClick="ExportExcel_Click"
19 Width="200px" /><br />
20 <asp:Button ID="ExportWord" runat="server" Text="匯出Word檔/儲存Word檔" OnClick="ExportWord_Click"
21 Width="200px" /><br />
22 <asp:Button ID="ExportText" runat="server" Text="匯出txt檔/儲存txt檔" Width="200px" OnClick="ExportText_Click" />
23 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString %>"
24 SelectCommand="SELECT * FROM [user]"></asp:SqlDataSource>
25 </div>
26 </form>
27 </body>
28 </html>
29
02
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml">
05 <head id="Head1" runat="server">
06 <title>未命名頁面</title>
07 </head>
08 <body>
09 <form id="form1" runat="server">
10 <div>
11 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
12 <Columns>
13 <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
14 SortExpression="id" />
15 <asp:BoundField DataField="gender" HeaderText="gender" SortExpression="gender" />
16 </Columns>
17 </asp:GridView>
18 <asp:Button ID="ExportExcel" runat="server" Text="匯出Excel檔/儲存Excel檔" OnClick="ExportExcel_Click"
19 Width="200px" /><br />
20 <asp:Button ID="ExportWord" runat="server" Text="匯出Word檔/儲存Word檔" OnClick="ExportWord_Click"
21 Width="200px" /><br />
22 <asp:Button ID="ExportText" runat="server" Text="匯出txt檔/儲存txt檔" Width="200px" OnClick="ExportText_Click" />
23 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString %>"
24 SelectCommand="SELECT * FROM [user]"></asp:SqlDataSource>
25 </div>
26 </form>
27 </body>
28 </html>
29
excel.aspx.cs
001
using System;
002
using System.Data;
003
using System.Configuration;
004
using System.Collections;
005
using System.Web;
006
using System.Web.Security;
007
using System.Web.UI;
008
using System.Web.UI.WebControls;
009
using System.Web.UI.WebControls.WebParts;
010
using System.Web.UI.HtmlControls;
011
012
public partial class excel : System.Web.UI.Page
013
{
014
protected void Page_Load(object sender, EventArgs e)
015
{
016
017
}
018
protected void ExportExcel_Click(object sender, EventArgs e)
019
{
020
//匯出excel檔
021
Response.Clear();
022
Response.AddHeader("content-disposition", "attachment;filename=test.xls");//excel檔名
023
Response.ContentType = "application/vnd.ms-excel";
024
Response.Charset = "";
025
System.IO.StringWriter sw = new System.IO.StringWriter();
026
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
027
DataGrid dg = new DataGrid();
028
dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);
029
dg.DataBind();
030
dg.RenderControl(htw);
031
Response.Write(sw.ToString());
032
Response.End();
033
034 //儲存excel檔
035
//System.IO.StringWriter sw = new System.IO.StringWriter();
036
//System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
037
//DataGrid dg = new DataGrid();
038
//dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);
039
//dg.DataBind();
040
//dg.RenderControl(htw);
041
//System.IO.File.WriteAllText(@"c:\test.xls", sw.ToString());
042
}
043
protected void ExportWord_Click(object sender, EventArgs e)
044
{
045
//匯出word檔
046
Response.Clear();
047
Response.AddHeader("content-disposition", "attachment;filename=test.doc");//word檔名
048
Response.ContentType = "application/vnd.ms-word";
049
Response.Charset = "";
050
System.IO.StringWriter sw = new System.IO.StringWriter();
051
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
052
DataGrid dg = new DataGrid();
053
dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);
054
dg.DataBind();
055
dg.RenderControl(htw);
056
Response.Write(sw.ToString());
057
Response.End();
058
059 //儲存word檔
060
//System.IO.StringWriter sw = new System.IO.StringWriter();
061
//System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
062
//DataGrid dg = new DataGrid();
063
//dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);
064
//dg.DataBind();
065
//dg.RenderControl(htw);
066
//System.IO.File.WriteAllText(@"c:\test.doc", sw.ToString());
067
}
068
protected void ExportText_Click(object sender, EventArgs e)
069
{
070
//匯出txt檔
071
Response.Clear();
072
Response.AddHeader("content-disposition", "attachment;filename=test.txt");//txt檔名
073
Response.ContentType = "application/vnd.ms-word";
074
Response.Charset = "";
075
System.Text.StringBuilder sb = new System.Text.StringBuilder();
076
DataTable dt = new DataTable();
077
dt = ((DataView)this.SqlDataSource1.Select(DataSourceSelectArguments.Empty)).ToTable();
078
//欄位名
079
for (int i = 0; i < dt.Columns.Count; i++)
080
{
081
sb.Append(dt.Columns[i].ColumnName);
082
sb.Append(",");
083
}
084
sb.Append(Environment.NewLine);
085
//資料
086
for (int i = 0; i < dt.Rows.Count; i++)
087
{
088
for (int j = 0; j < dt.Columns.Count; j++)
089
{
090
sb.Append(dt.Rows[i][j].ToString());
091
sb.Append(",");
092
}
093
sb.Append(Environment.NewLine);
094
}
095
Response.Write(sb.ToString());
096
Response.End();
097
098 //儲存txt檔
099
//System.Text.StringBuilder sb = new System.Text.StringBuilder();
100
//DataTable dt = new DataTable();
101
//dt = ((DataView)this.SqlDataSource1.Select(DataSourceSelectArguments.Empty)).ToTable();
102
////欄位名
103
//for (int i = 0; i < dt.Columns.Count; i++)
104
//{
105
// sb.Append(dt.Columns[i].ColumnName);
106
// sb.Append(",");
107
//}
108
//sb.Append(Environment.NewLine);
109
////資料
110
//for (int i = 0; i < dt.Rows.Count; i++)
111
//{
112
// for (int j = 0; j < dt.Columns.Count; j++)
113
// {
114
// sb.Append(dt.Rows[i][j].ToString());
115
// sb.Append(",");
116
// }
117
// sb.Append(Environment.NewLine);
118
//}
119
//System.IO.File.WriteAllText(@"c:\test.txt", sb.ToString());
120
}
121
}
using System;002
using System.Data;003
using System.Configuration;004
using System.Collections;005
using System.Web;006
using System.Web.Security;007
using System.Web.UI;008
using System.Web.UI.WebControls;009
using System.Web.UI.WebControls.WebParts;010
using System.Web.UI.HtmlControls;011

012
public partial class excel : System.Web.UI.Page013
{014
protected void Page_Load(object sender, EventArgs e)015
{016

017
}018
protected void ExportExcel_Click(object sender, EventArgs e)019
{020
//匯出excel檔021
Response.Clear();022
Response.AddHeader("content-disposition", "attachment;filename=test.xls");//excel檔名023
Response.ContentType = "application/vnd.ms-excel";024
Response.Charset = "";025
System.IO.StringWriter sw = new System.IO.StringWriter();026
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);027
DataGrid dg = new DataGrid();028
dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);029
dg.DataBind();030
dg.RenderControl(htw);031
Response.Write(sw.ToString());032
Response.End();033

034 //儲存excel檔
035
//System.IO.StringWriter sw = new System.IO.StringWriter();036
//System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);037
//DataGrid dg = new DataGrid();038
//dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);039
//dg.DataBind();040
//dg.RenderControl(htw);041
//System.IO.File.WriteAllText(@"c:\test.xls", sw.ToString());042
}043
protected void ExportWord_Click(object sender, EventArgs e)044
{045
//匯出word檔046
Response.Clear();047
Response.AddHeader("content-disposition", "attachment;filename=test.doc");//word檔名048
Response.ContentType = "application/vnd.ms-word";049
Response.Charset = "";050
System.IO.StringWriter sw = new System.IO.StringWriter();051
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);052
DataGrid dg = new DataGrid();053
dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);054
dg.DataBind();055
dg.RenderControl(htw);056
Response.Write(sw.ToString());057
Response.End();058

059 //儲存word檔
060
//System.IO.StringWriter sw = new System.IO.StringWriter();061
//System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);062
//DataGrid dg = new DataGrid();063
//dg.DataSource = this.SqlDataSource1.Select(DataSourceSelectArguments.Empty);064
//dg.DataBind();065
//dg.RenderControl(htw);066
//System.IO.File.WriteAllText(@"c:\test.doc", sw.ToString());067
}068
protected void ExportText_Click(object sender, EventArgs e)069
{070
//匯出txt檔071
Response.Clear();072
Response.AddHeader("content-disposition", "attachment;filename=test.txt");//txt檔名073
Response.ContentType = "application/vnd.ms-word";074
Response.Charset = "";075
System.Text.StringBuilder sb = new System.Text.StringBuilder();076
DataTable dt = new DataTable();077
dt = ((DataView)this.SqlDataSource1.Select(DataSourceSelectArguments.Empty)).ToTable();078
//欄位名079
for (int i = 0; i < dt.Columns.Count; i++)080
{081
sb.Append(dt.Columns[i].ColumnName);082
sb.Append(",");083
}084
sb.Append(Environment.NewLine);085
//資料086
for (int i = 0; i < dt.Rows.Count; i++)087
{088
for (int j = 0; j < dt.Columns.Count; j++)089
{090
sb.Append(dt.Rows[i][j].ToString());091
sb.Append(",");092
}093
sb.Append(Environment.NewLine);094
}095
Response.Write(sb.ToString());096
Response.End();097

098 //儲存txt檔
099
//System.Text.StringBuilder sb = new System.Text.StringBuilder();100
//DataTable dt = new DataTable();101
//dt = ((DataView)this.SqlDataSource1.Select(DataSourceSelectArguments.Empty)).ToTable();102
////欄位名103
//for (int i = 0; i < dt.Columns.Count; i++)104
//{105
// sb.Append(dt.Columns[i].ColumnName);106
// sb.Append(",");107
//}108
//sb.Append(Environment.NewLine);109
////資料110
//for (int i = 0; i < dt.Rows.Count; i++)111
//{112
// for (int j = 0; j < dt.Columns.Count; j++)113
// {114
// sb.Append(dt.Rows[i][j].ToString());115
// sb.Append(",");116
// }117
// sb.Append(Environment.NewLine);118
//}119
//System.IO.File.WriteAllText(@"c:\test.txt", sb.ToString());120
}121
}
執行結果:
參考來源:http://www.codersource.net/published/view/283/exporting_data_grid_to_excel.aspx
using