我正在尝试创建一个单元格宽度固定宽度的表格。 假设我有这段代码:
$table->addCell(300)->addText('first');
$table->addCell(300)->addText('text that is very looooooooong');
第一个单元格的300宽度被忽略,并在页面的左侧压碎,如下所示:
F 一世 [R 小号 Ť
我的第二个单元格将包含大型文本,但我希望该单元格保持其宽度。 我无法在网络上的任何地方找到它,所以我想知道是否有人知道我将在这里做些什么。
请记住,这些值是TIPS,300缇只有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中你还需要直接在每个表上设置自动调整选项,这可能就是原因。