使用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');//另存为