如何在创建Word文档时更改表的列宽

时间:2017-07-11 12:26:52

标签: c# .net ms-word

我开了一个新问题,因为我在这里或其他地方找到的答案都不适合我。

我使用C#中的Word创建一个表(Office 16.0 Interop)。

我的目标:使某个列的宽度更小,即适合其内容。

这是我创建表格的方式:

var table = doc.Tables.Add(menuParagraph.Range, rowCount, 2, ref _objMiss, ref _objMiss);
table.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
table.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;

// Label
table.Cell(1, 1).Range.Shading.BackgroundPatternColor = Word.WdColor.wdColorGray20;
table.Cell(1, 1).Range.Text = "Label";
table.Cell(1, 2).Range.Shading.BackgroundPatternColor = Word.WdColor.wdColorGray20;
table.Cell(1, 2).Range.Text = $"{recordItem.TextId.EnglishTranslation} ({recordItem.TextId.GermanTranslation})";
// Type and length
table.Cell(2, 1).Range.Text = "DataType";
table.Cell(2, 2).Range.Text = $"{recordItem.DataType} (Bit length: {recordItem.BitLength})";
// Byte offset
table.Cell(3, 1).Range.Text = "Byte offset";
table.Cell(3, 2).Range.Text = $"{recordItem.ByteOffset}";
// Default value
table.Cell(4, 1).Range.Text = "Default value";
table.Cell(4, 2).Range.Text = $"{recordItem.DefaultValue}";

到目前为止,我找到的解决方案都没有解决我的问题 事实上,它对我的​​桌子都没有任何影响。

table.Columns[0].AutoFit();被忽略,无论如何都没有效果。

table.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent);

也是如此

即使我直接设置宽度,它也会被忽略:

table.Columns[0].Width = app.PixelsToPoints(100f);

输出始终相同。每个列具有相同宽度的表。

enter image description here

如何强制表格使一列调整其宽度为其内容(并且仍然使用页面的整个宽度)。

2 个答案:

答案 0 :(得分:0)

您是否尝试过:table.Columns [0] .PreferredWidth? 也许那会奏效。
这里有一些关于它的文件:
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.table.preferredwidth.aspx

答案 1 :(得分:0)

对于第一列的自动拟合,这样的事情应该有效。它使用Column.SetWidth Method

table.AllowAutoFit = true;
Word.Column firstCol = table.Columns[1];
firstCol.AutoFit(); // force fit sizing
Single firstColAutoWidth = firstCol.Width; // store autofit width
table.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitWindow); // fill page width
firstCol.SetWidth(firstColAutoWidth, Word.WdRulerStyle.wdAdjustFirstColumn); // reset width keeping right table margin