Bạn muốn lập trình cho phép Export dữ liệu từ Datatable, Gridview ra Excel, Word hay PDF? Trong bài viết này mình sẽ giới thiệu với các bạn cách thực hiện điều đó bằng cách sử dụng thư viện itextsharp.dll.
Trước tiên bạn cần download thư viện itextsharp.dll về tại đây. http://www.entersources.com/download/itextsharp.rar
Sau khi down về giải nén và Add vào thư mục bin của ứng dụng. Sau đó khi cần thực hiện việc Export dữ liệu ra các định dạng khác nhau bạn thực hiện như bài minh họa sau. Trong bài này mình chỉ minh họa cách Export dữ liệu ra các định dạng word, Excel, PDF. Bạn có thể tìm hiểu thêm về thư viện itextsharp.dll để có thể export ra nhiều định dạng khác cùng như tìm hiểu các component khác của thư viện này.
Trước tiên bạn cần tạo một Form gồm một Gridview, và các Button (ExportToRord, ExportToExcelm ExportToPDF) như sau:
Trong code bạn thực hiện như sau: (Minh họa này mình lấy Database Northwind làm ví dụ và dữ liệu Export là các trường CustomerID, CompanyName, ContactName, ContactTitle)
1. Hàm GetDataToTable
view source
print?
01 private DataTable GetDataToTable(SqlCommand cmd)
02 {
03 DataTable dt = new DataTable();
04 // Khai báo chuỗi kết nối
05 String strConnString = @"Server =.\SQL2005;Initial Catalog=Northwind;User ID=sa;Password=sa";
06 SqlConnection con = new SqlConnection(strConnString);
07 SqlDataAdapter sda = new SqlDataAdapter();
08 cmd.CommandType = CommandType.Text;
09 cmd.Connection = con;
10 try
11 {
12 // Mở kết nối và đổ dữ liệu vào bảng
13 con.Open();
14 sda.SelectCommand = cmd;
15 sda.Fill(dt);
16 return dt;
17 }
18 catch (Exception ex)
19 {
20 throw ex;
21 }
22 finally
23 {
24 //Đóng kết nối
25 con.Close();
26 sda.Dispose();
27 con.Dispose();
28 }
29 }
Trong hàm Page_Load bạn thực hiện truy vấn và Bind dữ liệu như sau
view source
print?
01 protected void Page_Load(object sender, EventArgs e)
02 {
03 // Truy vấn và đổ dữ liệu vào Gridview
04 string TruyVan = @"SELECT c.CustomerID, c.CompanyName,
05 c.ContactName, c.ContactTitle FROM Customers c";
06 SqlCommand cmd = new SqlCommand(TruyVan);
07 DataTable dt = GetDataToTable(cmd);
08 grvExport.DataSource = dt;
09 grvExport.DataBind();
10 }
2. Hàm xuất dữ liệu từ 1 gridview ra word
view source
print?
01 /// <summary>
02 /// Xuất dữ liệu từ GridView ra word
03 /// </summary>
04 private void XuatDuLieuRaWord(GridView MyGridview)
05 {
06 Response.Clear();
07 Response.Buffer = true;
08 Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.doc");
09 Response.Charset = "";
10 Response.ContentType = "application/vnd.ms-word ";
11 StringWriter sw = new StringWriter();
12 HtmlTextWriter hw = new HtmlTextWriter(sw);
13 // Bỏ phân trang - Nếu chỉ muỗn Export Trang hiện hành thì chọn =true
14 MyGridview.AllowPaging = false;
15 MyGridview.DataBind();
16 MyGridview.RenderControl(hw);
17 Response.Output.Write(sw.ToString());
18 Response.Flush();
19 Response.End();
20 }
3. Hàm xuất dữ liệu từ một gridview ra Excel
view source
print?
01 /// <summary>
02 /// Xuất dữ liệu từ GridView ra Excel
03 /// </summary>
04 private void XuatDuLieuRaExcel(GridView MyGridview)
05 {
06 Response.Clear();
07 Response.Buffer = true;
08 Response.AddHeader("content-disposition",
09 "attachment;filename=GridViewExport.xls");
10 Response.Charset = "";
11 Response.ContentType = "application/vnd.ms-excel";
12 StringWriter sw = new StringWriter();
13 HtmlTextWriter hw = new HtmlTextWriter(sw);
14 // Bỏ phân trang - Nếu chỉ muỗn Export Trang hiện hành thì chọn =true
15 MyGridview.AllowPaging = false;
16 MyGridview.DataBind();
17 MyGridview.RenderControl(hw);
18 //Thay đổi Style
19 string style = @"";
20 Response.Write(style);
21 Response.Output.Write(sw.ToString());
22 Response.Write(Register.File());
23 Response.Flush();
24 Response.End();
25 }
4. Hàm xuất dữ liệu từ gridview ra PDF
view source
print?
01 /// <summary>
02 /// Hàm xuất dữ liệu từ gridview ra pdf
03 /// </summary>
04 private void XuatDuLieuGridRaPDF(GridView MyGridview)
05 {
06 Response.ContentType = "application/pdf";
07 Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
08 Response.Cache.SetCacheability(HttpCacheability.No Cache);
09 StringWriter sw = new StringWriter();
10 HtmlTextWriter hw = new HtmlTextWriter(sw);
11 MyGridview.AllowPaging = false;
12 MyGridview.DataBind();
13 MyGridview.RenderControl(hw);
14 StringReader sr = new StringReader(sw.ToString());
15 Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
16 HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
17 PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
18 pdfDoc.Open();
19 htmlparser.Parse(sr);
20 pdfDoc.Close();
21 Response.Write(pdfDoc);
22 Response.End();
23 }
Trong các sự kiện click của các nut button bạn thực hiện như sau:
view source
print?
01 protected void btnExportWord_Click(object sender, EventArgs e)
02 {
03 XuatDuLieuRaWord(grvExport);
04 }
05 protected void btnExportExcel_Click(object sender, EventArgs e)
06 {
07 XuatDuLieuRaExcel(grvExport);
08 }
09 protected void btnExportPDF_Click(object sender, EventArgs e)
10 {
11 XuatDuLieuGridRaPDF(grvExport);
12 }
Bạn chú ý trong code của bạn cần có hàm sau để chứng thực việc sử dụng HtmlForm. Nếu không sẽ có lỗi "Control 'grvExport' of type 'GridView' must be placed inside a form tag with runat=server" khi thực hiện Export.
view source
print?
1 public override void VerifyRenderingInServerForm(Control control)
2 {
3 //Xác nhận điều khiển HtmlForm tại thời gian chạy ASP.NET
4 }
Bạn có thể download mã nguồn bài viết hướng dẫn tại đây http://www.entersources.com/download..._excel_pdf.rar
Nguồn từ hmweb.com.vn
Bookmarks