PHP固定的单元格宽度


PHPWord fixed cell width

我正在尝试创建一个单元格宽度为固定宽度的表格.
假设我有以下代码:

$table->addCell(300)->addText('first');
$table->addCell(300)->addText('text that is very looooooooong');

第一个单元格的 300 宽度将被忽略,并压在页面左侧,如下所示:

f
i
r
s
t

我的第二个单元格将包含大文本,但我希望该单元格保持其宽度.
我在网上的任何地方都找不到它,所以我问是否有人知道我在这里必须做什么。

Remeber 这些值是 TWIPS,而 300 Twips 只是 5 毫米。空间不足以容纳超过 1 个字符。

这是一个计算器,可帮助您转换值:

托普格拉皮计算器

您也可以使用 Shared''Font 中的内置转换函数.php如下所示:

$helper= new PHPWord_Shared_Font();
//convert 5cm to Twips
$inTwips=$helper->centimeterSizeToTwips(5);

到目前为止,我还没有尝试过这个。

我刚刚发现您必须设置固定在表格上的样式"布局",如下所示

$fancyTableStyle = [
    'borderSize'  => 6,
    'borderColor' => '000000',
    'cellMargin'  => 80,
    'alignment'   => 'PhpOffice'PhpWord'SimpleType'JcTable::CENTER,
    'layout'      => 'PhpOffice'PhpWord'Style'Table::LAYOUT_FIXED,
];
$table = $section->addTable($fancyTableStyle);

然后长单词将自己包裹在单元格内。

如果在 phpword 对象上预设了表格样式,则布局样式将不起作用。

$fancyTableStyleName = 'Fancy Table';
$fancyTableStyle = [
    'borderSize'  => 6,
    'borderColor' => '000000',
    'cellMargin'  => 80,
    'alignment'   => 'PhpOffice'PhpWord'SimpleType'JcTable::CENTER,
    'layout'      => 'PhpOffice'PhpWord'Style'Table::LAYOUT_FIXED,
];
//table will not be fixed
$table = $section->addTable($fancyTableStyleName);

在ms word中,您还需要直接在每个表上设置自动调整选项,也许这就是原因。