C#MS Word互操作性-如何拉伸填充表中的最后一列



我在用c#编写的WinForms应用程序中使用Microsoft.Office.Interop.Word以编程方式创建word文档我需要创建一个表,前两列具有预定义的固定宽度,第三列(最后一列(被拉伸以填充可用页面的剩余宽度(如果我没有指定任何宽度,默认情况下,表会自行拉伸以填充页面的可用宽度,并且所有3列的大小都将相等,这不是我所需要的(。

我可以像这样预设前两列的大小:

myTable.Columns[1].Width = 130;
myTable.Columns[2].Width = 70;

这部分是直接的,可以正常工作。但我不知道如何调整第三列以拉伸填充页面宽度的其余部分。这是我最后一次尝试,导致第三列远远超出页面边缘:

myTable.Columns[3].Width = wordApp.UsableWidth - myTable.Columns[1].Width - myTable.Columns[2].Width;

我也试着不为第三列的宽度指定值,希望它能在默认情况下占据表的其余宽度,但相反,第三列被调整为一些看似任意的值(将该列上的单元格内容包装以适应(,表的总宽度缩小以适应所有3列,这小于页面的可用宽度。

我尝试使用以下表格属性的不同值,但没有成功:

myTable.AllowAutoFit = true;
myTable.PreferredWidth = wordApp.UsableWidth;

如果有人能帮忙,我们将不胜感激。非常感谢。

我包含了相关的代码块,如果这无论如何都有帮助的话:

Microsoft.Office.Interop.Word.Table myTable = wordDoc.Tables.Add(paraTitle.Range, 2, 3, ref missing, ref missing);
myTable.Borders.Enable = 1;
myTable.AllowAutoFit = true;
myTable.PreferredWidth = wordApp.UsableWidth;
//myTable.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthAuto;
myTable.Columns[1].Width = 130;
myTable.Columns[2].Width = 70;
myTable.Columns[3].Width = wordApp.UsableWidth - myTable.Columns[1].Width - myTable.Columns[2].Width;
myTable.Rows[1].Cells[1].Range.Text = "Items returned by:";
myTable.Rows[1].Cells[1].Range.Bold = 1;
myTable.Rows[1].Cells[2].Range.Text = "Name";
myTable.Rows[1].Cells[2].Range.Bold = 1;
myTable.Rows[1].Cells[3].Range.Text = "(person's name and initials...)";
myTable.Rows[1].Cells[3].Range.Bold = 0;
myTable.Rows[2].Cells[2].Range.Text = "Date / Time";
myTable.Rows[2].Cells[2].Range.Bold = 1;
myTable.Rows[2].Cells[3].Range.Text = "(timestamp...)";
myTable.Rows[2].Cells[3].Range.Bold = 0;

UsableWidth是指Word应用程序的Window宽度,而不是文档页面宽度。

相反,请使用:doc.PageSetup.PageWidth - (doc.PageSetup.LeftMargin + doc.PageSetup.RightMargin);