主页 > 互联网  > 

ThinkPHP使用phpword读取模板word文件并添加表格

ThinkPHP使用phpword读取模板word文件并添加表格

 1.安装phpword包composer require phpoffice/phpword

2.模板文件结构

如上图框住的是要替换的文本和要复制表格样式

实现代码

<?php namespace app\api\logic; use PhpOffice\PhpWord\Element\Table; use PhpOffice\PhpWord\SimpleType\TblWidth; use PhpOffice\PhpWord\TemplateProcessor; class Word { public static function test($arr,$title,$stu_name) { //多行数据参考<w:br/>用于换行 // $arr = [ // ['id' => '1', 'value' => '单词内容<w:br/>单词内容<w:br/>单词内容单词内容单词内容单<w:br/>词内容单词内容单词内容单词内容单词内容单<w:br/>词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容单词内容'], // ['id' => '2', 'value' => '单词内容单词内容单词内<w:br/>容单词内容单词内容'], // ['id' => '3', 'value' => '单词内容单词<w:br/>内容单词内容单词内容单词内容'], // ['id' => '4', 'value' => '单词内容单词内容单<w:br/>词内容单词内容单词内容单词内容单词内容单<w:br/>词内容单词内容单词内容<w:br/>单词内容单词内容单词内容单词内容单词内容'], // ['id' => '5', 'value' => '单<w:br/>词<w:br/>内<w:br/>容'], // ]; //新文件名 $filename = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8).".docx"; $date = date('Y-m-d'); $path = "export/word/$date/"; if (!file_exists($path)) { mkdir($path, 0777, true); } //实例化, 参数传入模板文件地址 $word_template = ROOT_PATH.'public/export/test.docx'; // 使用绝对路径 // 检查模板文件是否存在 if (!file_exists($word_template)) { throw new \Exception("模板文件不存在: " . $word_template); } $templateProcessor = new TemplateProcessor($word_template); //替换(设置)变量值 $array_title = [ 'title' => $title, 'date' => $date, 'num' => count($arr), 'name' => $stu_name, ]; $templateProcessor->setValues($array_title); //生成表格 $table = new Table(['borderSize' => 12, 'width' => 6000, 'unit' => TblWidth::TWIP, 'alignMent' => 'center']); $rows = count($arr);//总行数 $templateProcessor->cloneRow('id', $rows);//$arr条数复制行 for ($i = 0; $i < $rows; $i++) { $templateProcessor->setValue("id#" . ($i + 1), $arr[$i]['id']);//替换变量 $templateProcessor->setValue("value#" . ($i + 1), $arr[$i]['value']);//替换变量 } $templateProcessor->setComplexBlock('table', $table); //保存文件 $templateProcessor->saveAs($path . $filename); return "/" . $path . $filename; } }

上图是最终生成的word文件

标签:

ThinkPHP使用phpword读取模板word文件并添加表格由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“ThinkPHP使用phpword读取模板word文件并添加表格