【问题标题】:Formatting itextsharp table格式化 itextsharp 表
【发布时间】:2017-05-16 12:47:49
【问题描述】:

我有一个包含 2 列的给定表格,我尝试将其导出为 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);

输出如下所示:

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

我想要一张这样的表格,方向是从上到下,在页面底部起床并继续左侧,每隔一行着色:

【问题讨论】:

    标签: c# itext pdf-generation


    【解决方案1】:

    解决方案概述

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

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

    【讨论】:

    • 谢谢,我为表格创建了 4 列。如何设置它只显示 4 列并将右侧留空?即使我说PdfPTable tableUebersicht = new PdfPTable(4);,目前也增加了三列
    • 在 iText7 中,Table 接受一个构造函数,该构造函数将点的绝对数量作为列的大小。通过使用这个构造函数,您可以轻松地创建一个只跨越给定宽度的表格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多