【问题标题】:Selected Column Headers don't appear when Exporting DataGridview to PDF将 DataGridview 导出为 PDF 时不显示选定的列标题
【发布时间】:2016-06-27 14:19:22
【问题描述】:

表格输出 21 列,我希望它出现在表单上,​​当它导出为 PDF 时,我只想选择 6 个特定列输出。

但在我的情况下,导出的 PDF 不会完全导出这些列,因为它只显示 2 列,并且数据行填充下一列标题。 这个 datagridview 是用 SQL 生成的,我正在使用 ItextSharp。

这是数据网格视图:

PDF 输出:

这是代码:

for (int i = 0; i < colNum; i++)
{
    Phrase ph = null;
    if (memberGrid.Columns[i].Name == "Name" || memberGrid.Columns[i].Name == "Gender" || memberGrid.Columns[i].Name == "Address" || memberGrid.Columns[i].Name == "Email Address" || memberGrid.Columns[i].Name == "Mobile No" || memberGrid.Columns[i].Name == "Home No.")
    {
        ph = new Phrase(memtable.Columns[i].ColumnName, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD));
        mainTable.AddCell(ph);
    }
}

for (int x = 0; x < memberGrid.Rows.Count; x++)
{
    for (int k = 0; k < memberGrid.Columns.Count; k++)
    {
        if (memberGrid.Columns[k].Name == "Name" || memberGrid.Columns[k].Name == "Gender" || memberGrid.Columns[k].Name == "Address" || memberGrid.Columns[k].Name == "Email Address" || memberGrid.Columns[k].Name == "Mobile No" || memberGrid.Columns[k].Name == "Home No.")
        {
            if (memberGrid[k, x].Value != null)
            {
                string s = memberGrid[k, x].Value.ToString().Trim();
                Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
                mainTable.AddCell(ph);
            }
        }
    }
}

我的表格如何正确显示?

【问题讨论】:

  • 谢谢@RezaAghaei,它成功了。我现在看到我的代码不像 colNum 和 memtable 那样一致哈哈哈。

标签: c# winforms pdf datagridview itextsharp


【解决方案1】:

使用PdfTable 和调用AddCell 时,单元格会按照您添加它们的顺序添加到表格中。例如,如果您创建一个包含 3 列的表并添加值 1,2,3,4,5,6,则 1,2,3 将添加到第一行,4,5,6 将添加到第二行。

您应该更正代码中的一些内容:

  1. colNum 替换为memberGrid.Columns.Count
  2. memtable.Columns[i].ColumnName 替换为memberGrid.Columns[i].HeaderText
  3. 如果列包含null 值,则此语句if (memberGrid[k, x].Value != null) 可能会导致类似问题。

这些是代码1和2导致输出问题的明显问题。

示例:

以下示例取自iTextSharp - Introducing Tables

PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Phrase("Header spanning 3 columns"));
cell.Colspan = 3;
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
table.AddCell(cell);
table.AddCell("Col 1 Row 1");
table.AddCell("Col 2 Row 1");
table.AddCell("Col 3 Row 1");
table.AddCell("Col 1 Row 2");
table.AddCell("Col 2 Row 2");
table.AddCell("Col 3 Row 2");
doc.Add(table);

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2019-07-21
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多