【问题标题】:PHPWord Template Processor Clone Row and Set Values table problemPHPWord模板处理器克隆行和设置值表问题
【发布时间】:2021-03-26 20:59:18
【问题描述】:

所以我在 docx 中有一个表格,在表格的某一行内,我想用数组数据填充它
docx中的模板

${title} : ${content}  

预期值

test  : 1  
test2 : 2

我输入数据的代码在下面

 $dataRowTitle = "title";  
 $dataRow = [["title" => "test", "content" => "1"  ], ["title" => "test2", "content" => "2"  ]]  
 $templateProcessor->cloneRowAndSetValues($dataRowTitle, $dataRow);

但是发生的事情却是按照预期的结果,它创建了一个新的表行,该行填充了 dataRow 数组的第一个索引。如果我的 dataRow 数组有 3 个索引,它将创建 3 个新行。 我能做些什么让它在第一个数据下方写入下一个索引而不是创建一个新的表行?

【问题讨论】:

    标签: php laravel phpword


    【解决方案1】:

    cloneRowAndSetValues() 方法用于创建与数组中的项目一样多的新行

    一行中显示所有数据的步骤:

    • 制作一个包含所有标题的数组(使用array_map()
    • 制作一个包含所有内容的数组(使用array_map()
    • 用换行符(\n)加入所有标题并使用setValue()方法编写
    • 用换行符(\n)加入所有内容并使用setValue()方法编写

    这是一个示例代码:

    $dataRows = [
        ["title" => "test", "content" => "1"],
        ["title" => "test2", "content" => "2"]
    ];
    
    // array of titles
    $allTitles = array_map(function($data){return $data['title'];}, $dataRows);
    
    // array of content
    $allContent = array_map(function($data){return $data['content'];}, $dataRows);
    
    $templateProcessor->setValue('title', implode("\n", $allTitles));
    $templateProcessor->setValue('content', implode("\n", $allContent));
    

    如果\n 不起作用,请尝试\r\n

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 2020-04-23
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2013-12-18
      • 2020-05-08
      相关资源
      最近更新 更多