MigraDoc - 嵌套表格?

7
我希望在一个表格的特定单元格内嵌套另一个表格,但是我找不到将 Table 对象添加到 Cell 对象的方法,这种操作是否不可行?
或者,我可以合并一些单元格,但我在 MigraDoc 网站上找不到任何关于如何合并单元格的示例。
以下是我的代码:
Table parentTable = new Table();
parentTable.AddColumn(Unit.FromCentimeter(9));
Row parentRow = parentTable.AddRow();
Cell parentCell = parentRow.Cells[0];

Table currentTable = new Table();
currentTable.AddColumn(Unit.FromCentimeter(4));
Row currentRow = currentTable.AddRow();
currentRow.Cells[0].AddParagraph("blablabla");

parentCell.Add(currentTable); // this does not work
1个回答

23

发票示例使用合并功能:
http://www.pdfsharp.net/wiki/Invoice-sample.ashx

关键词是MergeRight和MergeDown。使用MergeRight=1可以得到跨越两个列的单元格。

我认为如果不过于复杂,合并是最好的方法。

您可以将TextFrame添加到Cell中,并将Table添加到TextFrame中以实现嵌套表格。但是,当TextFrame的内容增长时,表格单元格不会自动增长,需要处理行高度。

有一个技巧可以使用通用的Add方法在单元格或单元格中的Paragraph中添加Table。 代码hack将表格添加到表格单元格中:

parentCell.Elements.Add(currentTable);

这是一个未记录的功能。合并是推荐的方法。

单元格不会自动换行到下一页,因此只有小型嵌套表才适合添加到单元格中。


1
它运行良好。也适用于TextFrame。感谢您提供的链接和发票示例! - olivier
+1 对于“Elements”技巧。在单元格中添加.AddTable()简写以防止混淆会很不错。 - Farlop
什么意思是未记录文档?MigraDocCode或PDFSharp上没有足够的文档说明所有可用功能和对象,虽然有示例,但不全面。在Web上合并行和列不能提供足够的控制或灵活性。当您拥有一个根据运行时数据动态生成的表格时,尝试通过纵向合并行列来构建适应此表格的MigraDocCore表格单元格会很棘手。 - John Foll
@JohnFoll 表格单元格没有“AddTable”。 “未记录”意味着这不被描述为一个功能,并且在重大改版后可能不再起作用。我们曾经从源代码创建文档(请参见https://sourceforge.net/projects/pdfsharp/files/pdfsharp/PDFsharp%201.31/),但最近没有更新。曾经有一个在线版本的NuDoq,但现在已不再可用。工具来了又去得如此之快。我们建议使用PDFsharp源代码,这样您就可以在IntelliSense中获得源代码文档,并使用F12跳转到源代码以获取更多信息。 - I liked the old Stack Overflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接