怎么將ASP.NET導出Excel表格
怎么將ASP.NET導出Excel表格
之前一直想研究ASP.NET導出Excel表格來著,但一直沒有時間,這幾天因為一個項目的需要,所以就鉆研了一下。
小面小編告訴你怎么將ASP.NET導出Excel表格:
1.在DownStudent.aspx頁面上添加一個Label標簽用來顯示“請選擇要查看數(shù)據(jù)的條件”靜態(tài)文本;
2.在該頁面上添加DropDownList控件用來控制顯示數(shù)據(jù)以及輸出數(shù)據(jù)的條件,綁定DropDownList1_SelectedIndexChanged函數(shù);
3.在該頁面上添加GridView控件來顯示由DropDownList控件指定條件的數(shù)據(jù);
4.在該頁面上添加SqlDataSource控件用來連接數(shù)據(jù)庫并將查詢的結(jié)果返給GridView控件;
5.最后是一個確認按鈕,綁定Button1_Click函數(shù)。
后臺代碼實現(xiàn)(DownStudent.aspx.cs):(具體代碼見附錄)
后臺代碼的實現(xiàn)是導出Excel表格的關(guān)鍵所在,是重中之重。
1.首先是命名空間的問題,因為這里是導出Excel表格用到了輸入輸出流,所以必須在命名空間里引用IO流(
using System.IO;),我這里用的是SQLServer數(shù)據(jù)庫,所以還要用到(using System.Data;和using System.Data,Sql;);
2.實現(xiàn)DropDownList1_SelectedIndexChanged函數(shù),注意:SelectedIndexChanged方法的實現(xiàn)必須基于DropDownList1控件的AutoPostBack屬性要設置為True(否則SelectedIndexChanged方法無效),而DropDownList1_SelectedIndexChanged函數(shù)主要實現(xiàn)的就是根據(jù)DropDownList1控件選定的條件修改SqlDataSource控件的SelectComand的值;
代碼示例:SqlDataSource1.SelectCommand = "SELECT [Chufen], [Zhibu], [Zhuanzheng] from bizusers WHERE (bizusers.Zhibu ='" + DropDownList1.SelectedItem.Text + "')";
3.Button1_Click函數(shù)是精華所在,該函數(shù)實現(xiàn)思想是:先獲取一個數(shù)據(jù)庫連接(方法比較多,有傳統(tǒng)通過SqlConnect獲取的,也有調(diào)用外部類實現(xiàn)的),然后是一條SQL語句(Select查詢字符串),再者是調(diào)用外部類的方法根據(jù)SQL語句生成一個DataSet結(jié)果集對象(把SQL語句查詢到的值放入DataSet里,方便下一次使用,而不是再去訪問一次數(shù)據(jù)庫),最后,調(diào)用CreateExcel函數(shù),注意參數(shù);
4.實現(xiàn)CreateExcel函數(shù)(就是對生成的DataSet的進一步操作了);
其他引用文件說明:
在App_Code文件夾里主要有3個外部類,QueryString.cs文件這里不是重點,故跳過。1.ExcelExporter.cs文件主要是實現(xiàn)了CreateExcel函數(shù)中調(diào)用的類,是用來生成Excel文件的,涉及excelXML文件流,只需要會調(diào)用該類對DataSet進行處理即可,具體生成Excel表格工作交由它處理;2.SqlData.cs文件主要是封裝了連接數(shù)據(jù)庫SqlConnect對象的方法,并且實現(xiàn)了對SqlCommand命令獲取到的值的操作,實現(xiàn)了生成DataSet對象以及DataReader對象的方法(該文件主要好處是省去了每次在界面.cs文件中都要調(diào)用SqlConnect以及SqlCommand對象的麻煩);(具體代碼見附錄)
效果:
單擊“確認導出”按鈕;
選擇另存為即可;