簡體   English   中英

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

[英]C# MS Word Interoperability - how to stretch-fill last column in table

我在用 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM