【问题标题】:PHPWord fixed cell widthPHPWord 固定单元格宽度
【发布时间】:2013-11-17 11:39:12
【问题描述】:

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

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

第一个单元格的 300 宽度被忽略,并像这样压在页面的左侧:

f
i
r
s
t

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

【问题讨论】:

    标签: php phpword fixed-width


    【解决方案1】:

    我刚刚发现你必须在你的桌子上设置样式“布局”,如下所示

    $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 中,您还需要直接在每个表上设置自动调整选项,也许这就是原因。

    【讨论】:

      【解决方案2】:

      请记住,这些值为 TWIPS,而 300 Twips 仅为 5 毫米。 空间不足,无法容纳 1 个以上的字符。

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

      Topgrapy Calculator

      您也可以像这样使用 Shared\Font.php 中的内置转换函数:

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

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

      【讨论】:

      • 固定单元格宽度怎么样?我猜答案不完整,您能帮帮我们吗?
      猜你喜欢
      • 2011-05-10
      • 2015-07-13
      • 2012-09-26
      • 2014-11-11
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多