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


}

文档样式

相关推荐
一川风絮千片雪9 小时前
【排版教程】如何在Word/WPS中优雅的插入参考文献
word·wps
杜大哥9 小时前
如何在WPS打开的word、excel文件中,使用AI?
人工智能·word·excel·wps
青涩小鱼11 小时前
在WPS中设置word的页码不从第一页开始,从指定页开始插入页码
word·wps
狂野小青年13 小时前
在PHP Web开发中,实现异步处理有几种常见方式的优缺点,以及最佳实践推荐方法
消息队列·php·最佳实践·异步任务
张鱼小丸子17 小时前
【无标题】云原生作业六
开发语言·php
企鹅侠客1 天前
开源免费文档翻译工具 可支持pdf、word、excel、ppt
人工智能·pdf·word·excel·自动翻译
哥坐11路1 天前
网络IP跳动问题解决详
开发语言·php
一只哒布刘2 天前
第六次作业
开发语言·php
寰宇软件2 天前
PHP房屋出租出售高效预约系统小程序源码
前端·小程序·uni-app·vue·php
HUNAG-DA-PAO2 天前
Redis存在线程安全吗?为什么?
redis·安全·php