标签:composer setValue name no PHPWord tp5 复制 template 模板
PHPWORD使用文档
一:引入
tp5.0,tp5.1:
1:composer方式(推荐)
a:根目录下执行:composer require phpoffice/phpword
b:引入:
use PhpOffice\PhpWord\PhpWord;
2:下载引入方式
a:下载PHPWord:
地址:https://pan.baidu.com/s/19UctPmT5tdn0SqrEgM56MA
提取码:zxcv
b:放到项目根目录extend文件夹下,目录结构如下:
c:引入
use PhpOffice\PhpWord\PhpWord;
二:导出
$file = '../extend/files/pdf.docx';//路径,可更改
$PHPWord = new PhpWord();
$template = $PHPWord->loadTemplate($file);//加载模板
$template->setValue('title', '标题');//替换值
$file = date('Y-m-d-H-i-s') . '.docx';//文件名
$encoded_filename = urlencode($file); // 将文件名进行urlencode转码
$file = str_replace('+', '%20', $encoded_filename);
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $file . '"');
header('Content-Type:application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
$template->saveAs('php://output');
格式:
//替换值(模板内为${title},如模板图)
$template->setValue('title', '标题');
//选择框(模板内为check0和check1<字体是【Wingdings 2】>,替换时R是选中,£是未选,如模板图)
$template->setValue('check0', 1? 'R' : '£');//与模板内check0对应,变量命名可更改,与模板一致即可
$template->setValue('check1', 0? 'R' : '£');//与模板内check1对应,变量命名可更改,与模板一致即可
//复制行
$template->cloneRow('本行最左边的变量名', '要复制的行数');
//复制行-举例(如模板图)
$user = [['no'=>'1', 'name'=>'张三', 'sex'=>'男'], ['no'=>'2', 'name'=>'李四', 'sex'=>'女']];
$rows = count($user);
$template->cloneRow('no', $rows);//复制行,no是要复制行的最左边变量,$rows代表复制几行,复制后会是no#1,name#1,sex#1;no#2,name#2,sex#2这样的
for ($i = 0; $i < $rows; $i++) {
$template->setValue('no#' . ($i + 1), $user[$i]['no']);
$template->setValue('name#' . ($i + 1), $user[$i]['name']);
$template->setValue('sex#' . ($i + 1), $user[$i]['sex']);
}
//复制块,也可用于是否显示
$template->cloneBlock('块标签名','数量');//模板内为${块标签名}和${/块标签名}和html标签一样,成对出现,内容放中间
//复制块-举例(如模板图)
$show_name="显示";
$template->cloneBlock('show',2);//复制两个
$template->setValue('show_name',$show_name);//设置值
$template->cloneBlock('hide',0);//复制0个,代表隐藏,值也不用设了
//插入图片(模板内为${img})
$template->setImageValue('img', ['path' => '路径','width'=>500,'height'=>500]);
模板图
结果图
标签:composer,setValue,name,no,PHPWord,tp5,复制,template,模板 来源: https://www.cnblogs.com/waft/p/14107809.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。