Laravel 在线生成word

1. 依赖phpword     首先通过composer安装phpword包

        composer require phpoffice/phpword

2. 准备一个word模板(让客户或产品提供吧,docx格式的)

        将word文档存入项目中(位置可以自定义)

        将需要填写的word文档的位置先用变量占位

        下一步我们利用phpword方法替换变量就行

3. 创建合同模版

此处的合同模板在laravel框架下 一般默认在public目录下存放

$templateProcessor  =  new \PhpOffice\PhpWord\TemplateProcessor("online1w.doc");

4. 开始替换变量

//此处替换word文档中的对应变量值
$templateProcessor->setValue('JName', '测试');
$templateProcessor->setValue('JIDCode', '测试');
$templateProcessor->setValue('JLegalRepresentative', '测试');
。。。。。。。。
//创建文件名
$filename = date("YmdHis") . ".docx";
//保存word  存放位置可以自定义
$templateProcessor->saveAs(public_path("uploads/doc/" . $filename));

5. 保存后生成的word

        生成后的word将会替换word文档,如下图

6. 如果遇到表格样式的 需要做进一步处理

        假如我们需要生成的表格为以下

下面我们需要将填写的位置先用变量占位 如下图

 7.替换表格中的变量

   $arr_onef = [];

   for ($a=0;$a<count($FJname);$a++){
        $ar_two['FJname'] = $FJname[$a];
        $ar_two['FJbrand'] = $FJbrand[$a];
        $ar_two['FJunit'] = $FJunit[$a];
        $ar_two['FJnumber'] = $FJnumber[$a];
        array_push($arr_onef,$ar_two);
       }
    //上面是查询需要赋值的数据总数
    $rows=count($arr_onef);//总行数
   //克隆行 第一个参数为表格中的某列的字段 第二个参数为需要克隆的行数
   $templateProcessor->cloneRow('FJname',$rows);//复制行
   for($i=0;$i<$rows;$i++){
         $templateProcessor->setValue("FJname#".($i+1),$arr_onef[$i]['FJname']);//替换变量
         $templateProcessor->setValue("FJbrand#".($i+1),$arr_onef[$i]['FJbrand']);
         $templateProcessor->setValue("FJunit#".($i+1),$arr_onef[$i]['FJunit']);
         $templateProcessor->setValue("FJnumber#".($i+1),$arr_onef[$i]['FJnumber']);
     }
  

8.运行后的结果

 现在就操作完成啦,生成的文档可在设置的文件目录下查看,有问题欢迎大家留言一起讨论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值