Code Export dữ liệu từ DataGridView tới PDF với C#


Giới thiệu

Trong ví dụ này, chúng ta sẽ học các viết code C# để export dữ liệu từ DataGridView ra file PDF tới một thư mục nào đó.

Trong chương trình này, trước hết chúng ta sẽ thực hiện kết nối tới Database và lấy dữ liệu từ Database và hiển thị lên trên lưới như ảnh bên dưới. Bạn có thể tham khảo thêm phần lập trình với Cơ sở dữ liệu hoặc Khoá học đầy đủ với Lập trình .NET

How to export Datagrid to PDF with code C#

Hướng dẫn

Trước khi chúng ta bắt đầu phần code, chúng ta cần thêm thư viện iTextSharp tới dự án của chúng ta.
Để làm việc này, bạn kích chuột phải ở trên Project củ bạn và chọn menu “Manage NuGet Package“. Sau đó chọn tab “Browse” và tìm kiếm iTextSharp và cài đặt nó.

  • Project –> Manage NuGet Package –> Browse tab –> Tìm từ khoá iTextSharp; và rồi cài đặt.

Bây giờ, viết sự kiện Form Load, để lấy dữ liệu từ bảng tblEmployee trong cơ sở dữ liệu và hiển thị lên DataGridView. Trong ví dụ chúng ta giả sử có Database tên là DemoTest, trong đó có bảng
tblEmployee.

1. Code sự kiện Form Load


private void FrmExport_Load(object sender, EventArgs e)  
{  
    SqlConnection sqlCon;  
    string conString = null;  
    string sqlQuery = null;  
  
    conString = "Data Source=.;Initial Catalog=DemoTest;Integrated Security=SSPI;";  
    sqlCon = new SqlConnection(conString);  
    sqlCon.Open();  
    sqlQuery = "SELECT * FROM tblEmployee";  
    SqlDataAdapter dscmd = new SqlDataAdapter(sqlQuery, sqlCon);  
    DataTable dtData = new DataTable();  
    dscmd.Fill(dtData);  
    dataGridView1.DataSource = dtData;  
} 

Rồi, viết sự kiện cho nút Export, chúng ta phải tạo đối tượng PdfTable và đối tượng Document, lấy dữ liệu từ DataGridView, và thêm các hàng và các cột tới document này.

2. Code sự kiện click của nút Export


private void btnPdf_Click(object sender, EventArgs e)  
{  
    if (dataGridView1.Rows.Count > 0)  
    {  
        SaveFileDialog sfd = new SaveFileDialog();  
        sfd.Filter = "PDF (*.pdf)|*.pdf";  
        sfd.FileName = "Output.pdf";  
        bool fileError = false;  
        if (sfd.ShowDialog() == DialogResult.OK)  
        {  
            if (File.Exists(sfd.FileName))  
            {  
                try  
                {  
                    File.Delete(sfd.FileName);  
                }  
                catch (IOException ex)  
                {  
                    fileError = true;  
                    MessageBox.Show("Không thể ghi dữ liệu tới ổ đĩa. Mô tả lỗi:" + ex.Message);  
                }  
            }  
            if (!fileError)  
            {  
                try  
                {  
                    PdfPTable pdfTable = new PdfPTable(dataGridView1.Columns.Count);  
                    pdfTable.DefaultCell.Padding = 3;  
                    pdfTable.WidthPercentage = 100;  
                    pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;  
  
                    foreach (DataGridViewColumn column in dataGridView1.Columns)  
                    {  
                        PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));  
                        pdfTable.AddCell(cell);  
                    }  
  
                    foreach (DataGridViewRow row in dataGridView1.Rows)  
                    {  
                        foreach (DataGridViewCell cell in row.Cells)  
                        {  
                            pdfTable.AddCell(cell.Value.ToString());  
                        }  
                    }  
  
                    using (FileStream stream = new FileStream(sfd.FileName, FileMode.Create))  
                    {  
                        Document pdfDoc = new Document(PageSize.A4, 10f, 20f, 20f, 10f);  
                        PdfWriter.GetInstance(pdfDoc, stream);  
                        pdfDoc.Open();  
                        pdfDoc.Add(pdfTable);  
                        pdfDoc.Close();  
                        stream.Close();  
                    }  
  
                    MessageBox.Show("Dữ liệu Export thành công!!!", "Info");  
                }  
                catch (Exception ex)  
                {  
                    MessageBox.Show("Mô tả lỗi :" + ex.Message);  
                }  
            }  
        }  
    }  
    else  
    {  
        MessageBox.Show("Không có bản ghi nào được Export!!!", "Info");  
    }  
} 

Bây giờ, chạy ứng dụng của bạn. Khi chúng ta kích trên nút “Export To Pdf“, nó sẽ hỏi nơi chúng ta lưu tệp. Đặt tên file và kích OK. Nó sẽ tạo ra têp pdf với tên file mà chúng ta vừa nhập ở trong thư mục mà chúng ta đã chọn.

Chúc các bạn thành công!

Có thể bạn sẽ thích…

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Share via
Copy link
Powered by Social Snap