Hi smile,
You need to use DataGridView CellFormatting event handler.
Please refer below sample.
Namespaces
C#
using System.IO;
using System.Data;
using System.Drawing;
using System.Reflection;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.draw;
VB.Net
Imports System.IO
Imports System.Data
Imports System.Drawing
Imports System.Reflection
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.text.pdf.draw
Code
C#
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Question"),
new DataColumn("Is_Yes"),
new DataColumn("Is_No"),
new DataColumn("Is_Clear"),
new DataColumn("Is_Yes1"),
new DataColumn("Is_No1"),
new DataColumn("Is_Clear1")});
dt.Rows.Add("Question1", "True", "", "", "", "True", "");
dt.Rows.Add("Question2", "", "True", "", "True", "", "");
dt.Rows.Add("Question3", "True", "", "", "", "", "True");
dt.Rows.Add("Question4", "", "", "True", "True", "", "");
dt.Rows.Add("Question5", "", "", "True", "", "True", "");
dt.Rows.Add("Question6", "", "True", "", "", "True", "");
dt.Rows.Add("Question7", "True", "", "", "", "", "True");
dataGridView1.DataSource = dt;
}
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null && dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().ToLower() == "true")
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Green;
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.White;
}
}
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 = 100;
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));
pdfTable.AddCell(cell);
}
//Adding DataRow
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
PdfPCell pdfCell = new PdfPCell(new Phrase(cell.EditedFormattedValue.ToString()));
if (cell.EditedFormattedValue.ToString().ToLower() == "true")
{
pdfCell.BackgroundColor = new iTextSharp.text.BaseColor(Color.Green);
}
pdfTable.AddCell(pdfCell);
}
}
//Exporting to PDF
string folderPath = "D:\\PDFs\\";
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
using (FileStream stream = new FileStream(folderPath + "DataGridViewExport.pdf", FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
pdfDoc.Add(pdfTable);
pdfDoc.Close();
stream.Close();
}
}
VB.Net
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles Me.Load
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {
New DataColumn("Question"),
New DataColumn("Is_Yes"),
New DataColumn("Is_No"),
New DataColumn("Is_Clear"),
New DataColumn("Is_Yes1"),
New DataColumn("Is_No1"),
New DataColumn("Is_Clear1")})
dt.Rows.Add("Question1", "True", "", "", "", "True", "")
dt.Rows.Add("Question2", "", "True", "", "True", "", "")
dt.Rows.Add("Question3", "True", "", "", "", "", "True")
dt.Rows.Add("Question4", "", "", "True", "True", "", "")
dt.Rows.Add("Question5", "", "", "True", "", "True", "")
dt.Rows.Add("Question6", "", "True", "", "", "True", "")
dt.Rows.Add("Question7", "True", "", "", "", "", "True")
DataGridView1.DataSource = dt
End Sub
Private Sub dataGridView1_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs)
If DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value IsNot Nothing AndAlso DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString().ToLower() = "true" Then
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = Color.Green
Else
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = Color.White
End If
End Sub
Private Sub btnExportPdf_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim pdfTable As PdfPTable = New PdfPTable(DataGridView1.ColumnCount)
pdfTable.DefaultCell.Padding = 3
pdfTable.WidthPercentage = 100
pdfTable.HorizontalAlignment = Element.ALIGN_LEFT
pdfTable.DefaultCell.BorderWidth = 1
For Each column As DataGridViewColumn In DataGridView1.Columns
Dim cell As PdfPCell = New PdfPCell(New Phrase(column.HeaderText))
pdfTable.AddCell(cell)
Next
For Each row As DataGridViewRow In DataGridView1.Rows
For Each cell As DataGridViewCell In row.Cells
Dim pdfCell As PdfPCell = New PdfPCell(New Phrase(cell.EditedFormattedValue.ToString()))
If cell.EditedFormattedValue.ToString().ToLower() = "true" Then
pdfCell.BackgroundColor = New iTextSharp.text.BaseColor(Color.Green)
End If
pdfTable.AddCell(pdfCell)
Next
Next
Dim folderPath As String = "D:\PDFs\"
If Not Directory.Exists(folderPath) Then
Directory.CreateDirectory(folderPath)
End If
Using stream As FileStream = New FileStream(folderPath & "DataGridViewExport.pdf", FileMode.Create)
Dim pdfDoc As Document = New Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 10.0F)
PdfWriter.GetInstance(pdfDoc, stream)
pdfDoc.Open()
pdfDoc.Add(pdfTable)
pdfDoc.Close()
stream.Close()
End Using
End Sub
Screenshot
