吳金秀
(黃岡職業(yè)技術(shù)學(xué)院,湖北 黃岡 438000)
?
將GridView中的數(shù)據(jù)導(dǎo)出到Excel的方法探究
吳金秀
(黃岡職業(yè)技術(shù)學(xué)院,湖北 黃岡 438000)
Asp.net技術(shù)中有一組數(shù)據(jù)綁定控件,每個(gè)控件都有獨(dú)自顯示的數(shù)據(jù)的特點(diǎn)。其中GridView控件的功能很豐富,不僅能以二維的表格顯示數(shù)據(jù)庫(kù)的數(shù)據(jù),還提供了對(duì)數(shù)據(jù)的排序、分頁(yè)、選擇、編輯和刪除等功能。在實(shí)際中將GridView中的數(shù)據(jù)導(dǎo)出到Excel表格的應(yīng)用也很多,本文本主要介紹了用代碼的方式給GridView綁定數(shù)據(jù)以及將數(shù)據(jù)導(dǎo)出到Excel表格中的過(guò)程與方法。
數(shù)據(jù)庫(kù);GridView;導(dǎo)出
GridView控件以表格的形式顯示數(shù)據(jù),并能對(duì)數(shù)據(jù)的排序、分頁(yè)、選擇、編輯和刪除等功能。如果用SqlDataSource作用數(shù)據(jù)源控件,幾乎不用寫(xiě)任何代碼就可以完成這些功能。也可以用代碼提供數(shù)據(jù)源。
將GridView控件的列轉(zhuǎn)換成模板,完成用戶自定義數(shù)據(jù)的顯示,結(jié)合事件模型,可以完成用戶自定義的復(fù)雜的事件。同時(shí)系統(tǒng)還提供了數(shù)據(jù)顯示的“自動(dòng)套用格式”,系統(tǒng)內(nèi)置了十幾種內(nèi)部格式,當(dāng)然用戶也可以自定義格式。
GridView控件可以顯示數(shù)據(jù)源中的數(shù)據(jù)。通過(guò)SqlDataSourcer控件提供數(shù)據(jù)源或者用代碼的方式獲取數(shù)據(jù)源,GridView控件可以自動(dòng)的顯示數(shù)據(jù)源中數(shù)據(jù),也可以按用戶指定的方式或格式顯示數(shù)據(jù)。
利用SQL Server 2005數(shù)據(jù)庫(kù)管理系統(tǒng)完成數(shù)據(jù)庫(kù)的新建和數(shù)據(jù)的錄入,用GridView控件進(jìn)行顯示數(shù)據(jù),最后將GridView控件中的數(shù)據(jù)導(dǎo)出到Excel。
2.1新建數(shù)據(jù)庫(kù)
新建student數(shù)據(jù)庫(kù),在student數(shù)據(jù)庫(kù)中新建stuExam數(shù)據(jù)表,stuExam數(shù)據(jù)表包括學(xué)生的學(xué)號(hào)、班級(jí)、姓名、語(yǔ)文、數(shù)學(xué)、英語(yǔ)成績(jī),并錄入幾條記錄。)
2.2設(shè)計(jì)頁(yè)面
在頁(yè)上添加一個(gè)GridView控件和一個(gè)Button控件。設(shè)置GridView控件的ID為grvStu。設(shè)置Button控件Text=“導(dǎo)出到Excel”,ID為btnToExcel。
2.3在web.config配置文件中配置連接字符串
頁(yè)面要訪問(wèn)數(shù)據(jù)庫(kù),先在web.config配置文件
配置連接字符串。
2.4編寫(xiě)代碼
在頁(yè)面的后臺(tái)cs文件中編寫(xiě)代碼,獲取student數(shù)據(jù)庫(kù)stuExam表中的數(shù)據(jù),并對(duì)GridView控件進(jìn)行綁定。代碼如下。
protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
GetData();
}
protected void GetData()
{
string strcon=ConfigurationManager.ConnectionStrings[“stu”].ConnectionString;
SqlConnection con=new SqlConnection(strcon);
string sql=“SELECT * FROM[stuExam]”;
SqlDataAdapter da=new SqlDataAdapter(sql,con);
DataSet ds=new System.Data.DataSet();
da.Fill(ds);
grvStu.DataSource=ds.Tables[0].DefaultView;
grvStu.DataBind();
}
2.5數(shù)據(jù)的編輯
GridView控件按數(shù)據(jù)表中定義數(shù)據(jù)字段的順序顯示數(shù)據(jù)。如果自定義顯示的字段,則設(shè)置GridView的AutoGenerateColumns=“False”。通過(guò)編輯列,將數(shù)據(jù)列重新綁定?!霸础币晥D代碼如下。
給按鈕btnToExcel添加單擊事件,編寫(xiě)代碼實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel,并重寫(xiě)Page對(duì)象的VerifyRenderingInServerForm方法。
3.1給btnToExcel添加Click事件,并編寫(xiě)事件代碼
protected void btnToExcel_Click(object sender,EventArgs e)
{
//清除緩沖流
Response.Clear();
//設(shè)置輸出流的字符集類(lèi)型
Response.Charset=“gb2312”;
//是否緩沖后輸出
Response.Buffer=true;
//將HTML頭添加到輸出流
Response.AppendHeader(“Content-Disposition”,“attachment;filename=stuExam.xls”);
//設(shè)置輸出流的字符集編碼格式(UTF-8)
HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;
//輸出流的MINI類(lèi)型
Response.ContentType=“application/ms-excel”;
//實(shí)例化一個(gè)IO流的文本寫(xiě)入對(duì)象
System.IO.StringWritersw=new System.IO.StringWriter();
//實(shí)例化一個(gè)文本輸出流
System.Web.UI.HtmlTextWriterhtw=new HtmlTextWriter(sw);
//把當(dāng)前控件內(nèi)容放入到文本輸出流,準(zhǔn)備寫(xiě)入到Excel中
grvStu.RenderControl(htw);
//開(kāi)始寫(xiě)入
HttpContext.Current.Response.Output.Write(sw.ToString());
//發(fā)送內(nèi)容
HttpContext.Current.Response.Flush();
//發(fā)送完畢后,停止response
HttpContext.Current.Response.End();
}
3.2改寫(xiě)VerifyRenderingInServerForm方法
VerifyRenderingInServerForm()中雖然不寫(xiě)任何代碼,要一定重寫(xiě),才能保證數(shù)據(jù)正確的導(dǎo)出。
public override void VerifyRenderingInServerForm(Control control)
{
//不寫(xiě)任何代碼
}
3.3實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)功能
保存頁(yè)面并運(yùn)行,單擊按鈕打開(kāi)“打開(kāi)對(duì)話框”。即可完成數(shù)據(jù)的導(dǎo)出功能。
在實(shí)際應(yīng)用中將GridView控件中的數(shù)據(jù)導(dǎo)出到Excel文件的應(yīng)用很多。本文介紹了GridView控件的基本使用方法,以及用代碼的方式實(shí)現(xiàn)數(shù)據(jù)的綁定,并將數(shù)據(jù)導(dǎo)出到Excel文件中的方法與詳細(xì)步驟。
[1]ASP.NET從入門(mén)到精通.明日科技清華大學(xué)出版社出版時(shí)間:2012年9月.
[2]張正禮.ASP.NET 4.0網(wǎng)站開(kāi)發(fā)與項(xiàng)目實(shí)戰(zhàn).清華大學(xué)出版出版時(shí)間:2012-04-01.
[3]Asp.Net編程藝術(shù).武漢厚溥教育科技有限公司,清華大學(xué)出版社出版時(shí)間:2014年6月.
吳金秀,女,黃岡職業(yè)技術(shù)學(xué)院副教授。
TP311
A
1671-1602(2016)16-00010-02