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