【问题标题】:dataGridView to pdf with itextsharp使用 itextsharp 将 dataGridView 转换为 pdf
【发布时间】:2015-01-27 00:14:03
【问题描述】:

我在尝试获取 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);
}

【问题讨论】:

    标签: c# datagridview itextsharp pdfptable


    【解决方案1】:

    我已经修复了您的代码 sn-p 中的缩进。您现在可以一眼看出自己做错了什么。

    你有:

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

    现在您只添加一次表格。

    【讨论】:

    • 另外,去掉Try/Catch,在这种情况下没有好处,只有隐藏的无法发现的错误。
    猜你喜欢
    • 2022-03-07
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2015-12-19
    相关资源
    最近更新 更多