Thứ hai, ngày 5 tháng 12 năm 2016

Export 1 Dataset hoặc DataTable thành file Excel,Word,PDF và CSV

Ngày đăng: 29/3/2011, 9:35:50AM | Lượt xem: 26,380
Hot!

Trong quá trình làm web đặc biệt là những ứng dụng web nghiệp vụ ắt ẳn các bạn đã từng gặp phải trường hợp này đó là export dữ liệu của mình từ 1 Dataset hay Datatable ra file (Excel, Word, PDF hoặc CSV) dành cho người dùng. Bài này tôi sẽ giới thiệu sơ qua cách nhanh nhất để thực hiện điều này.

Các Namespaces sử dụng trong chương trình: (iTextSharp sử dụng trong việc Export data ra file PDF)

Namespaces

 

using System.Data;

using System.Data.SqlClient;

using System.Text;

using System.IO;

using iTextSharp.text;

using iTextSharp.text.pdf;

using iTextSharp.text.html;

using iTextSharp.text.html.simpleparser;

 

 

 

Tiếp theo sử dụng hàm GetData để lấy dữ liệu vào Datatable.

 

private DataTable GetData(SqlCommand cmd)

{

    DataTable dt = new DataTable();

    String strConnString = System.Configuration.ConfigurationManager.

         ConnectionStrings["conString"].ConnectionString;

    SqlConnection con = new SqlConnection(strConnString);

    SqlDataAdapter sda = new SqlDataAdapter();

    cmd.CommandType = CommandType.Text;

    cmd.Connection = con;

    try

    {

        con.Open();

        sda.SelectCommand = cmd;

        sda.Fill(dt);

        return dt;

    }

    catch (Exception ex)

    {

        throw ex;

    }

    finally

    {

        con.Close();

        sda.Dispose();

        con.Dispose();

    }

}

 

 Export to Word

 

Bên dưới là code Export dữ liệu từ Datatable sang Word

 

 

protected void ExportToWord(object sender, EventArgs e)

{

    //Get the data from database into datatable

    string strQuery = "select CustomerID, ContactName, City, PostalCode" +

                      " from customers";

    SqlCommand cmd = new SqlCommand(strQuery);

    DataTable dt = GetData(cmd);

 

    //Create a dummy GridView

    GridView GridView1 = new GridView();

    GridView1.AllowPaging = false;

    GridView1.DataSource = dt;

    GridView1.DataBind();

 

    Response.Clear();

    Response.Buffer = true;

    Response.AddHeader("content-disposition",

        "attachment;filename=DataTable.doc");

    Response.Charset = "";

    Response.ContentType = "application/vnd.ms-word ";

    StringWriter sw = new StringWriter();

    HtmlTextWriter hw = new HtmlTextWriter(sw);

    GridView1.RenderControl(hw);

    Response.Output.Write(sw.ToString());

    Response.Flush();

    Response.End();

}

 

Kết quả : 

Exported Word Document

 Export to Excel 

protected void ExportToExcel(object sender, EventArgs e)

{

    //Get the data from database into datatable

    string strQuery = "select CustomerID, ContactName, City, PostalCode" +

        " from customers";

    SqlCommand cmd = new SqlCommand(strQuery);

    DataTable dt = GetData(cmd);

 

    //Create a dummy GridView

    GridView GridView1 = new GridView();

    GridView1.AllowPaging = false;

    GridView1.DataSource = dt;

    GridView1.DataBind();

 

    Response.Clear();

    Response.Buffer = true;

    Response.AddHeader("content-disposition",

     "attachment;filename=DataTable.xls");

    Response.Charset = "";

    Response.ContentType = "application/vnd.ms-excel";

    StringWriter sw = new StringWriter();

    HtmlTextWriter hw = new HtmlTextWriter(sw);

 

    for (int i = 0; i < GridView1.Rows.Count; i++)

    {

        //Apply text style to each Row

        GridView1.Rows[i].Attributes.Add("class", "textmode");

    }

    GridView1.RenderControl(hw);

 

    //style to format numbers to string

    string style = @"<style> .textmode { mso-number-format:\@; } </style>";

    Response.Write(style);

    Response.Output.Write(sw.ToString());

    Response.Flush();

    Response.End();

}

 

 Kết quả :

Exported Excel Document

 Export to Portable Document Format (PDF)      

 

protected void ExportToPDF(object sender, EventArgs e)

{

    //Get the data from database into datatable

    string strQuery = "select CustomerID, ContactName, City, PostalCode" +

        " from customers";

    SqlCommand cmd = new SqlCommand(strQuery);

    DataTable dt = GetData(cmd);

 

    //Create a dummy GridView

    GridView GridView1 = new GridView();

    GridView1.AllowPaging = false;

    GridView1.DataSource = dt;

    GridView1.DataBind();

 

    Response.ContentType = "application/pdf";

    Response.AddHeader("content-disposition",

        "attachment;filename=DataTable.pdf");

    Response.Cache.SetCacheability(HttpCacheability.NoCache);

    StringWriter sw = new StringWriter();

    HtmlTextWriter hw = new HtmlTextWriter(sw);

    GridView1.RenderControl(hw);

    StringReader sr = new StringReader(sw.ToString());

    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);

    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

    pdfDoc.Open();

    htmlparser.Parse(sr);

    pdfDoc.Close();

    Response.Write(pdfDoc);

    Response.End(); 

}

 

Kết quả :  

Exported PDF Document

 Export to Comma Separated Values (CSV) 

protected void ExportToCSV(object sender, EventArgs e)

{

    //Get the data from database into datatable

    string strQuery = "select CustomerID, ContactName, City, PostalCode" +

         " from customers";

    SqlCommand cmd = new SqlCommand(strQuery);

    DataTable dt = GetData(cmd);

 

    Response.Clear();

    Response.Buffer = true;

    Response.AddHeader("content-disposition",

        "attachment;filename=DataTable.csv");

    Response.Charset = "";

    Response.ContentType = "application/text";

 

 

    StringBuilder sb = new StringBuilder();

    for (int k = 0; k < dt.Columns.Count; k++)

    {

        //add separator

        sb.Append(dt.Columns[k].ColumnName + ',');

    }

    //append new line

    sb.Append("\r\n");

    for (int i = 0; i < dt.Rows.Count; i++)

    {

        for (int k = 0; k < dt.Columns.Count; k++)

        {

            //add separator

            sb.Append(dt.Rows[i][k].ToString().Replace(",", ";") + ',');

        }

        //append new line

        sb.Append("\r\n");

    }

    Response.Output.Write(sb.ToString());

    Response.Flush();

    Response.End();

}

 Kết quả :  

Exported CSV File

 Hy vọng là nó sẽ giúp ích cho các bạn nhiều trong công việc.

 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.