格式化 itextsharp table

Formatting itextsharp table

我有一个包含 2 列的给定 table,我尝试将其导出为 pdf。

这是我的代码:

PdfPTable tableUebersicht = new PdfPTable(dtUebersicht100.Columns.Count);
tableUebersicht.SetWidths(new float[] { 250, 420 });
tableUebersicht.LockedWidth = true;
tableUebersicht.TotalWidth = 500f;

foreach (DataColumn c in dtUebersicht100.Columns)
{
    PdfPCell Spalte = new PdfPCell(new Phrase(c.ColumnName, VerdanaFont));
    Spalte.HorizontalAlignment = Element.ALIGN_CENTER;
    Spalte.VerticalAlignment = Element.ALIGN_MIDDLE;
    table.AddCell(Spalte);
}
foreach (DataRow dr in dtUebersicht100.Rows)
{
    PdfPCell Spalte0 = new PdfPCell(new Phrase(dr[0].ToString(), VerdanaFont));
    Spalte0.HorizontalAlignment = Element.ALIGN_CENTER;
    Spalte0.VerticalAlignment = Element.ALIGN_MIDDLE;

    double Double1 = Convert.ToDouble(dr[1].ToString());
    PdfPCell Spalte1 = new PdfPCell(new Phrase(string.Format("{0:C2}", Double1), VerdanaFont));
    Spalte1.HorizontalAlignment = Element.ALIGN_RIGHT;
    Spalte1.VerticalAlignment = Element.ALIGN_MIDDLE;

    table.AddCell(Spalte0);
    table.AddCell(Spalte1);
}

table.WriteSelectedRows(0, -1, 35, 757, cb);

输出如下所示:

如您所见,table 方向是从左到右,而不是从上到下。

我想要一个像这样的table,方向是从上到下,在页面底部起床并继续向左走,每隔一行涂上颜色:

解决方案概述

  • 看tableheader,有4列
  • 生成一个 iText table object,有 4 列
  • 按从左到右、从上到下的顺序添加单元格
    在你的情况下是:
    Verkaufernummer, Betrag, Verkaufernummer, Betrag
    1, 55.04, 50, 3.5

  • 跟踪您当前正在渲染的行,根据行设置单元格的背景颜色(在您的逻辑中偶数与奇数)