我想将智能表保存到我的服务器(如.xls)。 但我总是得到一个充满json代码的.xls。 如果我使用json_decode(..)并且.xls完全为空,我会收到“file_put error”。 如果我通过桌面上的卷曲来实现,我会得到正确的.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";
}
我希望你能帮助我。谢谢
答案 0 :(得分:3)
示例中需要调整的项目是标题以及响应的处理方式。
首先,在标题中使用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";
}
}
?>