PHPWord固定单元格宽度

时间:2013-11-17 11:39:13

标签: php phpword fixed-width

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

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

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

  

˚F

ř
小号

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

2 个答案:

答案 0 :(得分:3)

记住这些值是TWIPS和300缇只有5毫米。 没有足够的空间容纳超过1个字符。

这是一个可以帮助您转换价值的计算器:

Topgrapy Calculator

您也可以使用Shared \ Font.php中的内置转换功能,如下所示:

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

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

答案 1 :(得分:0)

我刚刚发现您必须像下面那样在表格上设置固定的“版式”

$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);

用毫秒为单位的单词,您还需要直接在每个表上设置自动调整选项,这也许就是原因。