在服务器上将Smartsheet另存为.xls(curl / php)

我想将智能表保存到我的服务器(作为.xls)。但是我总是得到一个用json-code填充的.xls。如果我使用json_decode(..),而.xls完全为空,则会收到“ file_put错误”。如果我通过在我的桌面上使用curl做到这一点,那么我会得到正确的.xls,其中包含了我所需的一切。

$baseURL = "https://api.smartsheet.com/1.1";
$headers = array("Authorization: Bearer ".$inputToken);
.
.
array_push($headers,'"Accept: application/vnd.ms-excel" -o  tmpfile.xls --insecure');
$curlSession = curl_init($sheetDetail_url);
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);
$smartsheetData = curl_exec($curlSession);

if (curl_errno($curlSession))
{
    echo "Oh No! Error: " . curl_error($curlSession);
}else{
    // Assign response to PHP object
    $sheetsObj = json_decode($smartsheetData);
    // close curlSession
    curl_close($curlSession);
}
$file1="tmpfile.xls";
if(!(file_put_contents($file1, $sheetsObj))){
    echo "file_put error";
} 

我希望你能帮助我。谢谢

布雷特

您的示例中需要调整的项目是标题和如何处理响应。

首先,在标题中使用curl命令行选项将不起作用。相反,您只需要指定应返回带有以下标头的XLS文件:

$headers = array("Authorization: Bearer ".$inputToken,
    "Accept: application/vnd.ms-excel");

其次,由于将要返回XLS文件,因此我们不想将该响应解析为JSON。而是,立即将响应写出到文件中。

考虑到这一点,以下示例将为您工作,并以XLS文件的形式检索指定的工作表。确保使用YOUR_TOKEN替换YOUR_SHEET_ID为适当的值。

<?php
$inputToken = 'YOUR_TOKEN';
$baseURL = "https://api.smartsheet.com/1.1";

$sheetDetail_url = $baseURL.'/sheet/YOUR_SHEET_ID';

$headers = array("Authorization: Bearer ".$inputToken,
    "Accept: application/vnd.ms-excel");

$curlSession = curl_init($sheetDetail_url);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);

$smartsheetData = curl_exec($curlSession);

// Check for error or save the file
if (curl_errno($curlSession))
{
    echo "Oh No! Error: " . curl_error($curlSession);
}else{
    curl_close($curlSession);

    $file1="tmpfile.xls";
    if(!(file_put_contents($file1, $smartsheetData))){
        echo "file_put error";
    }
}

?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章