Ngày trước, mình có viết một bài giới thiệu về cách xuất dữ liệu từ Gridview ra file Excel trong Asp.net, bài này mình lại giới thiệu với các bạn cách đọc file, lấy dữ liệu từ Dataset nhé
Đầu tiên tôi tạo một file excel có các trường như hình bên trên. Chúng ta sẽ đưa tất cả dữ liệu này vào Gridview, sau đó sử dụng bộ lọc với dropdrow listbox để lọc theo giá trị Slno kia. Cụ thể
ASP.NET
Đầu tiên tôi tạo một file excel có các trường như hình bên trên. Chúng ta sẽ đưa tất cả dữ liệu này vào Gridview, sau đó sử dụng bộ lọc với dropdrow listbox để lọc theo giá trị Slno kia. Cụ thể
ASP.NET
1
2
3
4
5
6
| <asp:DropDownList ID= "ddlSlno" runat= "server" OnSelectedIndexChanged= "ddlSlno_SelectedIndexChanged" AutoPostBack= "true" AppendDataBoundItems= "True" > <asp:ListItem Selected= "True" Value= "Select" >- Select -</asp:ListItem> </asp:DropDownList> <asp:GridView ID= "grvData" runat= "server" > </asp:GridView> |
C# code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| OleDbConnection oledbConn; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GenerateExcelData( "Select" ); } } protected void ddlSlno_SelectedIndexChanged(object sender, EventArgs e) { GenerateExcelData(ddlSlno.SelectedValue); } private void GenerateExcelData(string SlnoAbbreviation) { // need to pass relative path after deploying on server string path = System.IO.Path.GetFullPath(@ "C:\InformationNew.xls" ); /* connection string to work with excel file. HDR=Yes - indicates that the first row contains columnnames, not data. HDR=No - indicates the opposite. "IMEX=1;" tells the driver to always read "intermixed" (numbers, dates, strings etc) data columns as text. Note that this option might affect excel sheet write access negative. */ oledbConn = new OleDbConnection(@ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';" ); oledbConn.Open(); OleDbCommand cmd = new OleDbCommand(); ; OleDbDataAdapter oleda = new OleDbDataAdapter(); DataSet ds = new DataSet(); // selecting distict list of Slno cmd.Connection = oledbConn; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT distinct([Slno]) FROM [Sheet1$]" ; oleda = new OleDbDataAdapter(cmd); oleda.Fill(ds, "dsSlno" ); // passing list of states to drop-down list ddlSlno.DataSource = ds.Tables[ "dsSlno" ].DefaultView; ddlSlno.DataTextField = "Slno" ; ddlSlno.DataValueField = "Slno" ; ddlSlno.DataBind(); // by default we will show form data for all states but if any state is selected then show data accordingly if (!String.IsNullOrEmpty(SlnoAbbreviation) && SlnoAbbreviation != "Select" ) { cmd.CommandText = "SELECT [Slno],[FirstName],[LastName],[Location]" + " FROM [Sheet1$] where [Slno]= @Slno_Abbreviation" ; cmd.Parameters.AddWithValue( "Slno_Abbreviation" , SlnoAbbreviation); } else { cmd.CommandText = "SELECT [Slno],[FirstName],[LastName],[Location] FROM [Sheet1$]" ; } oleda = new OleDbDataAdapter(cmd); oleda.Fill(ds); // binding form data with grid view grvData.DataSource = ds.Tables[0].DefaultView; grvData.DataBind(); } // need to catch possible exceptions catch (Exception ex) {} finally { oledbConn.Close(); } } // close of method GemerateExceLData |
Chúc bạn thành công!
Comments[ 0 ]
Đăng nhận xét