【发布时间】:2020-11-09 03:39:01
【问题描述】:
我在用 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 列的宽度指定值,希望它默认占用表格的其余宽度 - 但是,第 3 列被调整为一些看似任意的值(使用此列上的单元格内容被包裹以适应)并且表格的整体宽度缩小以适合所有 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;
【问题讨论】:
标签: c# winforms office-interop