使用php的phpoffice/phpword
扩展包,操作word文档
1. 安装扩展包
composer require phpoffice/phpword
3. 简单使用
在项目里面先设计一个word模版文件,设置上变量,比如姓名,手机号,变量名用${username}
,${mobile}
这种格式。
代码示例
<?php
include_once "vendor/autoload.php";
$filename = "xb.docx";
$tmp=new \PhpOffice\PhpWord\TemplateProcessor($filename);//打开模板
$tmp->setValue('name','vilay'); //设置变量
$tmp->setValue('mobile','1565333333'); //设置变量
$tmp->saveAs('user.docx');//另存为
4. 表格复制
有时候业务需要,我们需要根据数据动态插入表格
比如现在有个表格,总共三列序号
,产品名称
,数量
,具体有几行是未知的。
首先,定义表格变量名称
序号 产品名称 数量
${no} ${product_name} ${num}
示例
<?php
include_once "vendor/autoload.php";
$filename = "xb.docx";
$tmp=new \PhpOffice\PhpWord\TemplateProcessor($filename);//打开模板
$tmp->setValue('name','vilay');
$tmp->setValue('mobile','18888888888');
$arr=[
['product_name'=>'v344','number'=>'4'],
['product_name'=>'3rfv5','number'=>'7'],
['product_name'=>'Qdlfjl','number'=>'8'],
['product_name'=>'Dkl89','number'=>'4'],
['product_name'=>'Dlpdf3','number'=>'6'],
['product_name'=>'Idf','number'=>'4'],
];
$rows=count($arr);//总行数
$tmp->cloneRow('no',$rows);//复制行
for($i=0;$i<$rows;$i++){
$tmp->setValue("no#".($i+1),$i+1);
$tmp->setValue("product_name#".($i+1),$arr[$i]['product_name']);
$tmp->setValue("number#".($i+1),$arr[$i]['number']);
}
$tmp->saveAs('product.docx');//另存为