使用itextsharp将dataGridView转换为pdf

时间:2015-01-27 00:14:04

标签: c# datagridview itextsharp pdfptable

我在尝试获取dataGridView中特定列的值时遇到问题,并将它们添加到PdtPtable中。 但是重复了表中添加的值,例如第一行添加了两次。我试图遍历每一行和每一行中的每一行。

PdfPTable pdfTable= new PdfPTable(5);
foreach(DataGridViewRow row in dataGridView1.Rows) {
    foreach (DataGridViewCell celli in row.Cells) {
        try {
            pdfTable.AddCell(celli.Value.ToString());
        }
        catch { }
    }
    doc.Add(pdfTable);
}

1 个答案:

答案 0 :(得分:1)

我已在您的代码段中修复了缩进。你现在可以一眼就看出你做错了什么。

你有:

PdfPTable pdfTable= new PdfPTable(5);
foreach(DataGridViewRow row in dataGridView1.Rows) {
    foreach (DataGridViewCell celli in row.Cells) {
        try {
            pdfTable.AddCell(celli.Value.ToString());
        }
        catch { }
    }
    doc.Add(pdfTable);
}

这意味着您正在创建一个表,将其添加的次数与行数相同,因此重复行。

你应该:

PdfPTable pdfTable= new PdfPTable(5);
foreach(DataGridViewRow row in dataGridView1.Rows) {
    foreach (DataGridViewCell celli in row.Cells) {
        try {
            pdfTable.AddCell(celli.Value.ToString());
        }
        catch { }
    }
}
doc.Add(pdfTable);

或者更好:

PdfPTable pdfTable= new PdfPTable(5);
foreach(DataGridViewRow row in dataGridView1.Rows) {
    foreach (DataGridViewCell celli in row.Cells) {
        pdfTable.AddCell(celli.Value.ToString());
    }
}
doc.Add(pdfTable);

现在您只添加一次表。