<tr id="EpcXC"></tr>
<video id="EpcXC"></video><hgroup id="EpcXC"><samp id="EpcXC"><b id="EpcXC"></b><section id="EpcXC"><blockquote id="EpcXC"><form id="EpcXC"></form></blockquote></section></samp><ruby id="EpcXC"><li id="EpcXC"><noframes id="EpcXC"><legend id="EpcXC"><code id="EpcXC"></code><optgroup id="EpcXC"><tr id="EpcXC"><kbd id="EpcXC"><ul id="EpcXC"></ul></kbd></tr></optgroup></legend><strike id="EpcXC"></strike><tfoot id="EpcXC"><textarea id="EpcXC"><figure id="EpcXC"><tr id="EpcXC"></tr></figure><kbd id="EpcXC"><button id="EpcXC"></button></kbd></textarea></tfoot><colgroup id="EpcXC"></colgroup></ruby></li><caption id="EpcXC"></caption>
        1. <caption id="EpcXC"></caption><option id="EpcXC"></option><td id="EpcXC"><ruby id="EpcXC"></ruby></td><li id="EpcXC"><button id="EpcXC"></button><sub id="EpcXC"></sub></li>
          1. <table id="EpcXC"></table><section id="EpcXC"></section><table id="EpcXC"><th id="EpcXC"><link id="EpcXC"></link></th></table><b id="EpcXC"></b><style id="EpcXC"></style><span id="EpcXC"><link id="EpcXC"><dfn id="EpcXC"><legend id="EpcXC"><address id="EpcXC"></address></legend><acronym id="EpcXC"></acronym></dfn></link></span><rt id="EpcXC"></rt><thead id="EpcXC"><blockquote id="EpcXC"></blockquote></thead>

          2. PHP + wps 实现在线编辑excel文件

            浏览:406 发布日期:2020/01/21 分类:用法示例
            PHP + wps 实现在线编辑excel文件; 如果没有其他功能建议加密参数不要太多;因为wps只需要密钥+key加密就能生效
            /**
            * 生成wps要的签名
            * getSign
            * @param $params
            * @return string
            * @author Tiau Hai
            * @date 2020-01-21 15:12
            */
            function getSign($data)
            {
            ksort($data); //按照key升序排列
            $stringA = '';
            foreach ($data as $key => $item) {
            $stringA .= $key . '=' . $item; // 整合新的参数数组
            }
            $stringSignTemp = $stringA . "_w_secretkey=" . '你的key';//拼接$appKey

            $stringSignTemp = hash_hmac('sha1', $stringSignTemp, '你的key', true);
            $sign = base64_encode($stringSignTemp);
            //return $sign;
            return urlencode($sign);
            }

            /**
            * 编辑表
            * surfaceEdit
            * @author Tiau Hai
            * @date 2020-01-21 16:54
            */
            public function surfaceEdit()
            {
            $id = request()->param('id');
            $data = [
            '_w_appid' => $this->appId,
            ];
            $sing = getSign($data);//生成签名
            $url = 'https://wwo.wps.cn/office/s/' . $id . '?_w_appid=' . $this->appId . '&_w_signature=' . $sing;
            $this->assign('id', $id);
            $this->assign('url', $url);
            return $this->fetch();
            }

            //接下来比较关键了 因为wps 会执行回调获取文件元信息 你的把获取文件信息的方法重新定义路由
            Route::rule('/v1/3rd/file/info','wps获取文件信息');//获取文件元信息
            Route::rule('/v1/3rd/file/save','获取修改的文件信息');//获取修改文件信息

            public function info()
            {
            $header = request()->header();
            $id = $header['x-weboffice-file-id'];//文件id在你传给wps时它会返给你
            $template = model('你存放文件的表');
            $templates = $template->where(['id' => $id])->find();
            //下面的格式 wps固定 具体的要看wps文档
            $data = [
            'file' => [
            'id' => $id, //文件id,字符串长度小于40
            'name' => $templates['name'], //文件名
            'version' => 1, //当前版本号,位数小于11
            'size' => 200, //文件大小,单位为B
            'creator' => 'id0', //创建者id,字符串长度小于40
            'create_time' => 1136185445, //创建时间,时间戳,单位为秒
            'modifier' => "id1000", //修改者id,字符串长度小于40
            'modify_time' => time(), //修改时间,时间戳,单位为秒
            'download_url' => config('url') . $templates['url'], //文档下载地址
            'user_acl' => [
            'rename' => 1, //重命名权限,1为打开该权限,0为关闭该权限,默认为0
            'history' => 1 //历史版本权限,1为打开该权限,0为关闭该权限,默认为1
            ],
            'watermark' => [
            'type' => 0, //水印类型, 0为无水印; 1为文字水印
            'value' => "", //文字水印的文字,当type为1时此字段必选
            'fillstyle' => "rgba( 192, 192, 192, 0.6 )", //水印的透明度,非必选,有默认值
            'font' => "bold 20px Serif", //水印的字体,非必选,有默认值
            'rotate' => -0.7853982, //水印的旋转度,非必选,有默认值
            'horizontal' => 50, //水印水平间距,非必选,有默认值
            'vertical' => 100 //水印垂直间距,非必选,有默认值
            ]
            ],
            'user' => [
            'id' => 'id1000', //用户id,长度小于40
            'name' => 'wps-1000', //用户名称
            'permission' => "write", //用户操作权限,write:可编辑,read:预览
            'avatar_url' => "" //用户头像地址
            ]
            ];
            return json_encode($data);
            }

            //获取修改的文件
            public function save()
            {
            $header = request()->header();
            $file = $_FILES['file'];
            //图片的本地路径
            $id = $header['x-weboffice-file-id'];
            $template = model('存放文件的表');
            $templates = $template->where(['id' => $id])->find();
            unlink(PUBLIC_PATH . '/' . $templates['url']);
            move_uploaded_file($_FILES["file"]["tmp_name"], PUBLIC_PATH . '/' . $templates['url']);
            //下面的格式 wps固定 具体的要看wps文档
            $data = [
            'file' => [
            'id' => $id, //文件id,字符串长度小于40
            'name' => $templates['name'], //文件名
            'version' => 2, //当前版本号,位数小于11
            'size' => 200, //文件大小,单位是B
            'download_url' => config('url'). $templates['url'] //文件下载地址
            ]
            ];
            return json_encode($data);
            }

            评论( 相关
            后面还有条评论,点击查看>>