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;
    }


}

文档样式

相关推荐
叼烟扛炮4 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮12 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
zhikouai14 小时前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
叼烟扛炮18 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮18 小时前
Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
linux·网络·网络协议·php·tcpdump
vipxieliang1 天前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
东鹏特饮2 天前
系统运维(传统/通用运维)面试题
开发语言·php
多客:duokelijie2 天前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
从琳开始9892 天前
网络原理入门(二)------OSI七层模型?TCP/IP五层(四层)模型原来是这样的
java·网络·tcp/ip·java-ee·php
BingoGo2 天前
PHP 标准库的价值远不止少写几行代码
后端·php