2015-01-27 108 views
0

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

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

我已经修复了代码段中的缩进。你现在可以在一瞥中看到你做错了什么。

您有:

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); 

现在您要添加的表只有一次。

+0

非常感谢,它真的帮助我 – Erduan 2015-01-27 10:39:34

+1

另外,摆脱'Try/Catch',在这种情况下没有任何好处,只有隐藏的不可发现的错误。 – 2015-01-27 14:27:19