2015-01-27 103 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