【问题标题】:Dynamically Fittext a cell动态地适合文本单元格
【发布时间】:2018-01-01 04:59:07
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: vba ms-word ole


    【解决方案1】:

    您可能会想到AutoFit,而不是FitText

    来自:FitText (MSDN)

    如果 FitText 属性设置为True,则文本的字体大小不会更改,但会调整字符的视觉宽度以适应所有键入的文本到单元格中。 (Source)

    来自:Table.AutoFitBehavior 方法 (MSDN)

    确定 Microsoft Word 在使用自动调整功能时如何调整表格大小。 (Source)

    AutoFit 和它的相关方法应该让你更幸运。

    但是当心,如果您对使用 VBA 操作 Word 对象不是很熟悉,那将不是一件容易的事。

    控制表相当复杂。 Word 以它认为合适的方式执行大部分操作,但如果您使用 VBA,则必须进行控制。通过调用 Selection 对象让您的生活变得更加悲惨,这确实是不可取的。

    请参阅this sourcethis link 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 2011-07-07
      • 2021-12-05
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多