PHP处理word

替换块

$tmp->setValue(‘title’,$title);

大段复制

$tmp->cloneBlock(“block_1”,0,true,false,$info);
其中$info中的键是模板中需要替换的名称,值是替换后的值

举例子 $info

举例子 $info
$info=array(
            array("title"=>"一、的萨芬莫斯科电脑麦克风莫斯科的","study_body"=>"的萨芬莫斯科电脑麦克风莫斯科的的萨芬莫斯科电脑麦克风莫斯科的","main_time"=>"9:10-9:40"),
            array("title"=>"二、是多少dasdasda斯科的","study_body"=>"是多少dasdasda斯科的是多少dasdasda斯科的克风莫斯科的","main_time"=>"9:40-10:10"),
        );

#模板中block_1 

${block_1}
${title}
参加对象:${study_body}
时间:${main_time}

${/block_1}

删除块

$templateProcessor->deleteBlock(‘block_name’);

require_once 'vendor/autoload.php';
 //如果是Thinkphp 在目录下已经使用composer安装了phpoffice 的phpword 可以不适应这个

use PhpOffice\PhpWord\TemplateProcessor;

// 加载模板文件
$templateProcessor = new TemplateProcessor('path/to/your/template.docx');

// 删除块 谨慎使用,可以用空值去替换
$templateProcessor->deleteBlock('block_name');

// 保存修改后的文档
$templateProcessor->saveAs('path/to/your/new/document.docx');

保持文件信息

$tmp->saveAs($save_name);

删除大坑:

1.在大段block中 若传入空值则不进行替换,且该块不显示。

2.若删除块可能会导致下面的块连同删除。

#模板

${block_1}
${title}
参加对象:${study_body}
时间:${main_time}

${/block_1}
${block_2}
${title}
出席:${cx_name}

${/block_2}

#PHP block_1 无内容,block_2有内容 可以替换:
(其中传入$block_1为array空,$block_1=array();即可)

$tmp->cloneBlock("block_1",0,true,false,$block_1);
$tmp->cloneBlock("block_2",0,true,false,$block_2);

#错误调用
$tmp->deleteBlock("block_1");
$tmp->cloneBlock("block_2",0,true,false,$block_2);

#可能会导致block_2连同删除,巨坑!!!!!

发表回复