Xuất dữ liệu từ Gridview ra file Excel trong Asp.net
Bài viết sẽ hướng dẫn các bạn làm thế nào để xuất dữ liệu từ Gridview ra file Excel trong asp.net rất đơn giản.
Bài viết này chúng ta đi sâu vào khía cạnh làm thế nào để xuất dữ liệu từ Gridview ra file Excel chứ không đi sâu vào từng phần cụ thể nhé. Ở đây chúng ta sử dụng một nút button để thực hiện việc bắt sự kiện khi người dùng click để xuất ra file Excel.
Các bạn thiết kế database như hình dưới đây
Trước tiên, viết một hàm để bind dữ liệu từ database ra Gridview nhé
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| protected void fillGrid() { string str = "SELECT [UNo], [EmpName], [Age], convert(char,[dob],103) dob FROM [tbl_EmpDetails]" ; myConnection = new SqlConnection(conn); myConnection.Open(); myCommand = new SqlCommand(str, myConnection); SqlDataAdapter mySQLDataAdapter; myDataSet = new DataTable(); mySQLDataAdapter = new SqlDataAdapter(myCommand); mySQLDataAdapter.Fill(myDataSet); GridView1.DataSource = myDataSet; GridView1.DataBind(); ViewState[ "dtList" ] = myDataSet; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { fillGrid(); } } |
Sau khi bind, dữ liệu đã sẵn sàng để xuất ra file excel, và bạn chỉ việc click button Export To Excel là có thể có một file dữ liệu mang định dạng excel rồi, nhưng để làm được việc đó thì bạn cần phải code thêm như sau. Ở đây tôi sử dụng FileInfo để lấy thông tin của file.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| FileInfo FI = new FileInfo(Path); StringWriter stringWriter = new StringWriter(); HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter); DataGrid DataGrd = new DataGrid(); DataGrd.DataSource = dt1; DataGrd.DataBind(); DataGrd.RenderControl(htmlWrite); string directory = Path.Substring(0, Path.LastIndexOf( "\\" )); // GetDirectory(Path); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } System.IO.StreamWriter vw = new System.IO.StreamWriter(Path, true); stringWriter.ToString().Normalize(); vw.Write(stringWriter.ToString()); vw. Flush (); vw.Close(); WriteAttachment(FI.Name, "application/vnd.ms-excel" , stringWriter.ToString()); |
OK, hàm bên trên có sử dụng hàm WriteAttachment để lấy file từ user trong đối tượng Response.
1
2
3
4
5
6
7
8
9
| public static void WriteAttachment(string FileName, string FileType , string content) { HttpResponse Response = System.Web.HttpContext.Current.Response; Response.ClearHeaders(); Response.AppendHeader( "Content-Disposition" , "attachment; filename=" + FileName); Response.ContentType = FileType ; Response.Write(content); Response. End (); } |
Comments[ 0 ]
Đăng nhận xét