从数据库导入Excel的方法总结
要在ASP.Net中把数据库中的数据导入到Excel中有如下的几种方法:
一. RenderControl的方法
1、如果出现下面的错误提示可用重载VerifyRenderingInServerForm方法解决。
错误提示:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
在后台文件中重载VerifyRenderingInServerForm方法,如:
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
2、如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
可用Response.ContentEncoding = System.Text.Encoding.UTF7;
或者Encoding.UTF8等来解决,不过导入格式和字体上个人感觉UTF7比UTF8效果好些;
因人而异了:)
3. 在导出数据项前加上' '
导入Excel 时, 数字字符的数据会因Excel中的科学计数法, 导致数值过大的数据丢失后几位数.
二. 逐行写入法
private void ExportToExcel()
{
//设置文件格式为Excel

Response.ContentType = "application/ms-excel";

//设置导出的文件名,要替换你自己的文件

Response.AddHeader("Content-Disposition", "inline;filename=Filename.xls");

//写第一行的表格头(Grid的表头)

for( int iCol=0; iCol< 列数; iCol++)

Response.Write( “表格头的内容” + Convert.ToChar(9));

Response.Write("\n");

foreach (每行)
{
for( int iCol=0; iCol< 列数; iCol++)
Response.Write( “实际的数据,即Grid的内容” + Convert.ToChar(9));

Response.Write("\n");
}

Response.Write("\n");
Response.End();

}

}

一. RenderControl的方法
1
*
2
* // by XiaoYin [10/22/2006]
3
*/
4
using System;
5
using System.Data;
6
using System.Configuration;
7
using System.Web;
8
using System.Web.Security;
9
using System.Web.UI;
10
using System.Web.UI.WebControls;
11
using System.Web.UI.WebControls.WebParts;
12
using System.Web.UI.HtmlControls;
13
using System.Data.SqlClient;
14
using System.Xml;
15
16
public partial class _Default : System.Web.UI.Page
17
{
18
19
/**//// <summary>
20
/// 链接字符串
21
/// </summary>
22
public string ConnectString
23
{
24
get
25
{
26
return ConfigurationManager.AppSettings["ConnectionString"];
27
}
28
}
29
30
/**//// <summary>
31
/// 重载VerifyRenderingInServerForm方法
32
/// 确认在运行时为指定的 ASP.NET 服务器控件呈现 HtmlForm 控件。
33
/// </summary>
34
/// <param name="control">ASP.NET 服务器控件,它必须位于 HtmlForm 控件中</param>
35
public override void VerifyRenderingInServerForm(Control control)
36
{
37
//base.VerifyRenderingInServerForm(control);
38
}
39
40
41
protected void Page_Load(object sender, EventArgs e)
42
{
43
if (!Page.IsPostBack)
44
{
45
BindData();
46
}
47
}
48
49
/**//// <summary>
50
/// 绑定数据
51
/// </summary>
52
public void BindData()
53
{
54
// 查询
55
string query = "SELECT * FROM Categories";
56
SqlConnection myConnection = new SqlConnection(ConnectString);
57
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
58
DataSet ds = new DataSet();
59
ad.Fill(ds, "Categories");
60
GridView1.DataSource = ds;
61
GridView1.DataBind();
62
}
63
64
/**//// <summary>
65
/// 内存分页
66
/// </summary>
67
/// <param name="sender"></param>
68
/// <param name="e"></param>
69
protected void Paging(object sender, GridViewPageEventArgs e)
70
{
71
GridView1.PageIndex = e.NewPageIndex;
72
BindData();
73
}
74
75
protected void Button1_Click(object sender, EventArgs e)
76
{
77
Response.Clear();
78
Response.Buffer = true;
79
Response.Charset = "GB2312";
80
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
81
//gaoyang [10/21/2006] 经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
82
Response.ContentEncoding = System.Text.Encoding.UTF7;
83
84
//设置输出文件类型为excel文件。
85
Response.ContentType = "application/ms-excel";
86
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
87
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
88
this.GridView1.RenderControl(oHtmlTextWriter);
89
Response.Output.Write(oStringWriter.ToString());
90
Response.Flush();
91
Response.End();
92
}
93
}
94
注意以下几点:
*2
* // by XiaoYin [10/22/2006]3
*/4
using System;5
using System.Data;6
using System.Configuration;7
using System.Web;8
using System.Web.Security;9
using System.Web.UI;10
using System.Web.UI.WebControls;11
using System.Web.UI.WebControls.WebParts;12
using System.Web.UI.HtmlControls;13
using System.Data.SqlClient;14
using System.Xml;15

16
public partial class _Default : System.Web.UI.Page 17
{18

19
/**//// <summary>20
/// 链接字符串21
/// </summary>22
public string ConnectString23
{24
get25
{26
return ConfigurationManager.AppSettings["ConnectionString"];27
}28
}29

30
/**//// <summary>31
/// 重载VerifyRenderingInServerForm方法32
/// 确认在运行时为指定的 ASP.NET 服务器控件呈现 HtmlForm 控件。33
/// </summary>34
/// <param name="control">ASP.NET 服务器控件,它必须位于 HtmlForm 控件中</param>35
public override void VerifyRenderingInServerForm(Control control)36
{37
//base.VerifyRenderingInServerForm(control);38
}39

40

41
protected void Page_Load(object sender, EventArgs e)42
{43
if (!Page.IsPostBack)44
{45
BindData();46
}47
}48

49
/**//// <summary>50
/// 绑定数据51
/// </summary>52
public void BindData()53
{54
// 查询55
string query = "SELECT * FROM Categories";56
SqlConnection myConnection = new SqlConnection(ConnectString);57
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);58
DataSet ds = new DataSet();59
ad.Fill(ds, "Categories");60
GridView1.DataSource = ds;61
GridView1.DataBind();62
}63

64
/**//// <summary>65
/// 内存分页66
/// </summary>67
/// <param name="sender"></param>68
/// <param name="e"></param>69
protected void Paging(object sender, GridViewPageEventArgs e)70
{71
GridView1.PageIndex = e.NewPageIndex;72
BindData();73
}74

75
protected void Button1_Click(object sender, EventArgs e)76
{77
Response.Clear();78
Response.Buffer = true;79
Response.Charset = "GB2312";80
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");81
//gaoyang [10/21/2006] 经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。82
Response.ContentEncoding = System.Text.Encoding.UTF7;83

84
//设置输出文件类型为excel文件。 85
Response.ContentType = "application/ms-excel";86
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();87
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);88
this.GridView1.RenderControl(oHtmlTextWriter);89
Response.Output.Write(oStringWriter.ToString());90
Response.Flush();91
Response.End();92
}93
}94

1、如果出现下面的错误提示可用重载VerifyRenderingInServerForm方法解决。
错误提示:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
在后台文件中重载VerifyRenderingInServerForm方法,如:
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
2、如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
可用Response.ContentEncoding = System.Text.Encoding.UTF7;
或者Encoding.UTF8等来解决,不过导入格式和字体上个人感觉UTF7比UTF8效果好些;
因人而异了:)
3. 在导出数据项前加上' '
导入Excel 时, 数字字符的数据会因Excel中的科学计数法, 导致数值过大的数据丢失后几位数.
二. 逐行写入法
private void ExportToExcel()
{
//设置文件格式为Excel
Response.ContentType = "application/ms-excel";
//设置导出的文件名,要替换你自己的文件
Response.AddHeader("Content-Disposition", "inline;filename=Filename.xls");
//写第一行的表格头(Grid的表头)
for( int iCol=0; iCol< 列数; iCol++)
Response.Write( “表格头的内容” + Convert.ToChar(9));
Response.Write("\n"); 
foreach (每行)
{
for( int iCol=0; iCol< 列数; iCol++)
Response.Write( “实际的数据,即Grid的内容” + Convert.ToChar(9));
Response.Write("\n");
}
Response.Write("\n");
Response.End(); 
}
}



浙公网安备 33010602011771号