tp下引用php文件夹,tp5使用PHPWord(下载引入/composer两种方式)

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文件夹下,目录结构如下:

d8d1810df84b9374de057a3849f0fa89.png

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,替换时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]);

模板图

e11df7198d776c1c8e690c539505792b.png

结果图

0d4d3a2b5e4bca4f786a327d11a4e93a.png

标签:composer,setValue,name,no,PHPWord,tp5,复制,template,模板

来源: https://www.cnblogs.com/waft/p/14107809.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值