php word文档中写入数据

php 复制代码
<?php

namespace app\api\controller;

/**
 * 首页接口
 */
class Coursess extends Api
{
    //签订合同
    public function contract()
    {
        $id = $this->request->post('id');
        $qian = $this->request->post('qian');
        
        if (!$id || !$qian) {
            $this->error(__('Invalid parameters'));
        }
        $order_house = OrderHouse::find($id);
        if (!$order_house) {
            $this->error(__('订单不存在'));
        }
        if ($order_house->contract == 1) {
            $this->error(__('合同已签署'));
        }
        $order = Order::where('order_first_id|order_two_id',$order_house->id)->find();
        if (!$order) {
            $this->error(__('订单不存在'));
        }
        
        $j_order = OrderHouse::find($order->order_first_id);
        if (!$j_order) {
           $this->error(__('订单不存在'));
        }
        $j_time = explode(' - ',$j_order->reservation);
        
        $date1 = new \DateTime($j_time[0]);
        $date2 = new \DateTime($j_time[1]);
        $interval = $date1->diff($date2);
        $day = $interval->format('%a');
        
        $s_time = explode('-',$j_time[0]);
        $e_time = explode('-',$j_time[1]);
        $j_user_real = UserReal::where('user_id',$j_order->user_id)->find();
        if (!$j_user_real) {
            $this->error(__('未找到实名信息'));
        }
        $y_order = OrderHouse::find($order->order_two_id);
        if (!$y_order) {
           $this->error(__('订单不存在'));
        }
        $y_user_real = UserReal::where('user_id',$y_order->user_id)->find();
        if (!$y_user_real) {
            $this->error(__('未找到实名信息'));
        }
        $data = [
            'j_name' => $j_user_real->username,
            'j_card' => $j_user_real->card,
            'y_name' => $y_user_real->username,
            'y_card' => $y_user_real->card,
            'j_address' => $j_order->house->address.$j_order->house->add_detailed,
            'j_mian' => $j_order->house->house_area,
            'y_address' => $y_order->house->address.$y_order->house->add_detailed,
            'y_mian' => $y_order->house->house_area,
            
            's_year' => $s_time[0],
            's_month' => $s_time[1],
            's_ri' => $s_time[2],
            
            'e_year' => $e_time[0],
            'e_month' => $e_time[1],
            'e_ri' => $e_time[2],
            'day' => $day,
            
            'k_year' => $s_time[0],
            'k_month' => $s_time[1],
            'k_ri' => $s_time[2],
            
            'j_dprice' => Order::getChineseNumber($j_order->price),
            'j_price' => $j_order->price,
            'y_dprice' => Order::getChineseNumber($y_order->price),
            'y_price' => $y_order->price,
            
            'j_mobile' => $j_order->user->mobile,
            'y_mobile' => $y_order->user->mobile,
            
            'q_y' => date('Y'),
            'q_m' => date('m'),
            'q_r' => date('d'),
            
        ];
        
        if ($order->contract != '') {
            $bg = $order->contract;
        }else{
            $bg = '/hfht.docx';
        }
        
        if ($id == $order->order_first_id) {
            $type = 1;
        }else{
            $type = 2;
        }
        
        $contract = Order::words($data,$bg,$type, $qian);
        // halt($contract);
        if ($contract) {
            $order->contract = $contract;
            $order->save();
            $order_house->contract = 1;
            $order_house->save();
            $this->success('签订成功');
        }else{
            $this->error(__('签订失败'));
        }
        
    }



    //合同填充
    public static function words($data, $bg, $type, $qian){
        
        $templatePath = ROOT_PATH."public".$bg;
        
        $tpl = new \PhpOffice\PhpWord\TemplateProcessor($templatePath);
        
        //填充数据
        foreach ($data as $key => $value) {
            $tpl->setValue($key, $value);
        }
        if ($type == 1) {
            $tpl->setImageValue('j_qian', array('path' => ROOT_PATH."public".$qian, 'width' => 50, 'height' => 50, 'ratio' => false));
            
        }else{
            $tpl->setImageValue('y_qian', array('path' => ROOT_PATH."public".$qian, 'width' => 50, 'height' => 50, 'ratio' => false));
            
        }
        
        // $tpl->setImageValue('y_qian', ROOT_PATH."public".$qian);
        
        //文件名
        // if ($type == 1) {
        //     $title = 'queren';
        // }else{
        //     $title = 'songji';
        // }
        $file = time() . '.docx';//文件名
        // $encoded_filename = urlencode($file); // 将文件名进行urlencode转码
        $url = ROOT_PATH.'public';
        $path = '/contract/'.str_replace('+', '%20', $file);
        $tpl->saveAs($url.$path);
        // return \fast\Http::sendToBrowser($path,true);
        return $path;
    }


}

文档样式

相关推荐
yanwushu3 小时前
10分钟搭建 PHP 开发环境教程
php·laravel
bu_shuo6 小时前
word表格中使用公式
word·表格
不坑老师9 小时前
利用不坑盒子的Copilot,快速排值班表
microsoft·word·powerpoint·excel·copilot·wps
车载测试工程师11 小时前
车载以太网网络测试-29【SOME/IP-SD】-SD状态机
网络·网络协议·tcp/ip·车载系统·php
开开心心就好12 小时前
批量PDF转换工具,一键转换Word Excel
开发语言·前端·学习·pdf·电脑·word·excel
还鮟20 小时前
CTF Web PHP弱类型与进制绕过(过滤)
php·ctf
zorro_z20 小时前
PHP语法基础篇(八):超全局变量
php
九分源码1 天前
基于PHP+MySQL组合开发开源问答网站平台源码系统 源码开源可二次开发 含完整的搭建指南
mysql·开源·php
RainSerein1 天前
Laravel8中使用phpword生成word文档
word·php·laravel
qq_393828221 天前
办公文档批量打印器 Word、PPT、Excel、PDF、图片和文本,它都支持批量打印。
windows·word·powerpoint·excel·软件需求