如何在MigraDoc中将表格调整为页面宽度?

23

我正在尝试自动调整表格的宽度以充满整个页面。该表格应该有两列,每列占50%的宽度。

我该如何实现这一目标?我尝试使用LeftIndent和RightIndent属性,但没有成功。


1
发布一些你当前的代码可能会帮助我们…… - Mo Patel
3个回答

31
这里有一种方法可以避免硬编码宽度,同时允许更灵活的纸张格式。请确保在您的类中包含using MigraDoc.DocumentObjectModel;语句。
Document document = new Document();

Section section = document.AddSection();

section.PageSetup = document.DefaultPageSetup.Clone();
section.PageSetup.PageFormat = PageFormat.A4;

Table table = section.AddTable();

float sectionWidth = section.PageSetup.PageWidth - section.PageSetup.LeftMargin - section.PageSetup.RightMargin;
float columnWidth = sectionWidth / 2;

Column column = table.AddColumn();
column.Width = columnWidth;
Column column2 = table.AddColumn();
column2.Width = columnWidth;

Row row = table.AddRow();
row.Cells[0].AddParagraph("Row 1, Column A");
row.Cells[1].AddParagraph("Row 1, Column B");

13
需要注意的是,此方法仅在先前指定了“PageSetup.PageWidth”、“PageSetup.LeftMargin”和“PageSetup.RightMargin”时才有效。如果您想使用“PageSetup”的默认值,请将“DefaultPageSetup.Clone()”分配给该节的“PageSetup”。 - I liked the old Stack Overflow
1
section.PageSetup.PageFormat = PageFormat.A4;之前添加section.PageSetup = document.DefaultPageSetup.Clone(); - Jinjinov

2

在MigraDoc中不能使用百分比值。


您可以设置每列的绝对宽度。

因此,在每侧有2.5厘米边距的DIN A4纸张上,您还剩下16厘米用于表格,所以您需要创建两个8厘米宽的列。

您可以设置表格的左缩进来水平移动表格。


1
如果 Kidquick 的回答不起作用,可以使用 document.DefaultPageSetup:
document.DefaultPageSetup.PageFormat = PageFormat.A4;

int sectionWidth = (int)document.DefaultPageSetup.PageWidth - (int)document.DefaultPageSetup.LeftMargin - (int)document.DefaultPageSetup.RightMargin;

Table table = section.AddTable();
table.AddColumn(sectionWidth);
Row row = table.AddRow();
row.Height = 60;

4
DefaultPageSetup 不应该被直接修改。可以通过复制 DefaultPageSetup 得到一个新的副本,并将其赋值给会话的 PageSetup,然后根据需要对其进行修改。 - I liked the old Stack Overflow

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