它应该足够简单:
public void WritePartsPdf(Document doc)
{
Table table = new Table(2, true);
foreach (var part in PartsList)
{
Paragraph name = new Paragraph(part.PartName);
Paragraph length = new Paragraph(part.Length.ToString());
var cell = new Cell().Add(name);
var cell2 = new Cell().Add(length);
cell.Add(cell2);
table.AddCell(cell);
}
doc.Add(table);
}
但是,我的段落在所有单元格中都是重复的,因此我需要在这里显而易见的是,一列表示名称,另一列表示长度。这是我到目前为止所得到的:
请帮助!
答案 0 :(得分:1)
因此,“问题”是设置表格比我最初想象的还要简单。我们不需要嵌套单元格,因为我已经设置了列数,只需要在另一个单元格之后再添加一个就可以了:
public void WritePartsPdf(Document doc)
{
Table table = new Table(2, true);
foreach (var part in PartsList)
{
var name = new Paragraph(part.PartName);
var length = new Paragraph(part.Length.ToString());
var column1 = new Cell().Add(name);
var column2 = new Cell().Add(length);
table.AddCell(column1);
table.AddCell(column2);
}
doc.Add(table);
}
必须在这里仔细研究一下代码以获取想法:https://developers.itextpdf.com/content/itext-7-jump-start-tutorial-net/chapter-3-using-renderers-and-event-handlers
****更新****
它变得更加容易。我在弄乱它,发现Paragraph
扩展了BlockElement<T>
,所以我们根本不需要像元对象将像元添加到表中:
private void WriteListToPdf(Document doc)
{
Table table = new Table(2, true);
foreach (var item in myList)
{
table.AddCell(new Paragraph(item.Foo));
table.AddCell(new Paragraph(item.Bar));
}
doc.Add(table);
}
幸运的是,tableAddCell
的{{1}}过载;)
如果单个单元格中需要多行,您仍然需要单元格对象。只需将一堆段落添加到单元格中,然后然后将单元格添加到表中即可。