我正在使用perl中的OLE自动化在Word中创建一个表。我正在以编程方式填充表内容。指定行高和列宽。我正在努力实现以下目标。
如果单元格内容大于单元格的宽度,我想设置FitText属性,以便行高不变。但是,我无法识别出这种情况的细胞。将所有单元格的Fittext属性设置为True,拉伸小于单元格宽度的单元格内容。因此,我更喜欢将FitText属性设置为True,以用于比单元格更宽的单元格内容。
我尝试了以下内容
# set row height
$rowheight=20;
...
...
$table1->Cell($rowindex,$colindex)->{WordWrap}="True";
$table1->Cell($rowindex,$colindex)->Range->{Text}=$text;
$cellheight = $table1->Rows($rowindex)->{Height};
if ($cellheight > $rowheight){
$table1->Cell($rowindex,$colindex)->{FitText}="True";
}
但是,单元格高度属性不会更改,因为高度设置为wdRowHeightAtLeast并且返回的单元格高度与原始行高度保持不变。
我也在word中手动看到这种行为。当wordwrap被转换并且单元格内容更大时,相应的行变得更大。
有人能指出我如何实现这个目标吗?
谢谢SR
AutoFit
,而不是FitText
。来源:FitText(MSDN)
如果FitText属性设置为
True
,则不会更改文本的字体大小,但会调整字符的可视宽度以使所有键入的文本适合单元格。 (Source)
来自:Table.AutoFitBehavior方法(MSDN)
确定在使用AutoFit功能时Microsoft Word如何调整表的大小。 (Source)
你应该有更多的运气与AutoFit
及其相关的方法。
但要注意,如果你不熟悉使用VBA操作Word Objects,那就不容易了。
控制表相当复杂。 Word以其认为合适的方式完成大部分工作,但如果您使用VBA,则必须采取控制措施。通过调用Selection对象,你真的不应该让自己的生活变得更加悲惨。
有关更多信息,请参阅this source和this link。