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

浏览:674 发布日期:2019/12/05 分类:用法示例
PHP + wps 实现在线编辑excel文件; 如果没有其他功能建议加密参数不要太多;因为wps只需要密钥+key加密就能生效
/**
* 生成wps要的签名
* getSign
* @param $params
* @return string
* @author Tiau Hai
* @date 2019-11-01 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 2019-11-05 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);
}

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