Darren Darren - 2 months ago 16
C# Question

How do i convert data from datagridview to a pdf file?

Hi i have this datagrid view which i would like to convert it to a pdf file. How do i do it? I searched online and found some codes but it seems like the website i found missed out on a lot of things.

using System.IO;
using System.Data;
using System.Reflection;
using iTextSharp.text.pdf;
using iTextSharp.text;

private void btnExportPdf_Click(object sender, EventArgs e)
{
//Creating iTextSharp Table from the DataTable data
PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
pdfTable.DefaultCell.Padding = 3;
pdfTable.WidthPercentage = 30;
pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
pdfTable.DefaultCell.BorderWidth = 1;

//Adding Header row
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));
cell.BackgroundColor = new iTextSharp.text.Color(240, 240, 240);
pdfTable.AddCell(cell);
}

//Adding DataRow
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
pdfTable.AddCell(cell.Value.ToString());
}
}

//Exporting to PDF
string folderPath = "C:\\PDFs\\";
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
using (FileStream stream = new FileStream(folderPath + "DataGridViewExport.pdf", FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
pdfDoc.Add(pdfTable);
pdfDoc.Close();
stream.Close();
}
}

Answer Source
I Converted this:
//Adding DataRow
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        pdfTable.AddCell(cell.Value.ToString());
    }
}
TO:
//Adding DataRow


 foreach (DataGridViewRow row in dataGridView1.Rows)
 {
      foreach (DataGridViewCell cell in row.Cells)
      {
           try
           {
               pdfTable.AddCell(cell.Value.ToString());
           }
           catch { }
       }
 }

and in new version that i download must change:

cell.BackgroundColor = new iTextSharp.text.Color(240, 240, 240);

to:

cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);