Hiển thị kết quả từ 1 đến 2 / 2
  1. #1
    Tham gia
    16-08-2010
    Bài viết
    84
    Like
    0
    Thanked 1 Time in 1 Post

    Xuất dữ liệu ra Excle, Word hay PDF với asp.net - C#

    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
    Quote Quote

  2. #2
    Tham gia
    28-05-2007
    Location
    Flower City
    Bài viết
    144
    Like
    0
    Thanked 0 Times in 0 Posts
    Có thể dùng Spire.Doc như bài http://www.dammio.com/2017/03/20/cac...re-pdf-bang-c/

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •