2015-03-02 79 views
0

我正在將數據從php數組導出到xls文件。 一切都很正常,如果我只是寫他們到文件回聲是這樣的:以二進制格式返回結果

function toExcel($arrayOfData) { 
    $data = null; 
    $rowCounter = 0; 

    if(is_array($arrayOfData) === true) { 
     foreach($arrayOfData as $key=>$value) { 
      $colCounter = 0; 
      if($key == 0) { 
       foreach(array_keys($arrayOfData[0]) as $hKey => $header) { 
        echo xlsWriteLabel(0, $hKey, $header); 
       } 
       $rowCounter++; 
      } 
      if(is_array($value) === true) { 
       foreach($value as $data) { 
        echo xlsWriteLabel($rowCounter, $colCounter, $data);; 
        $colCounter++; 
       } 
       $rowCounter++; 
      } 
     } 
    } 
} 

但我想要的只是一個變量返回的二進制代碼,如:

function toExcel($arrayOfData) { 
    $data = null; 
    $rowCounter = 0; 

    if(is_array($arrayOfData) === true) { 
     foreach($arrayOfData as $key=>$value) { 
      $colCounter = 0; 
      if($key == 0) { 
       foreach(array_keys($arrayOfData[0]) as $hKey => $header) { 
        $data .= xlsWriteLabel(0, $hKey, $header); 
       } 
       $rowCounter++; 
      } 
      if(is_array($value) === true) { 
       foreach($value as $data) { 
        $data .= xlsWriteLabel($rowCounter, $colCounter, $data); 
        $colCounter++; 
       } 
       $rowCounter++; 
      } 
     } 
    } 
    return $data; 
} 

當我做這個,然後做echo到Excel($ somearray);它會創建已破解的xls。

任何想法爲什麼以及如何解決它?我有xls文件的開始和結束的其他功能,所以如果有人會想,問題就不存在了。

+1

我不認爲它應該有所作爲,但嘗試初始化'$數據=「」'而不是將其設置爲「空」。 – Barmar 2015-03-02 23:09:16

+0

它沒有,我試過,但我已經找到了解決方案,你可以檢查出來。 – 2015-03-02 23:10:24

回答

1

好了,我想通了,有一個與範圍的問題,它應該看起來像:

function toExcel($arrayOfData) { 
$data = xlsBOF(); 
$rowCounter = 0; 

if(is_array($arrayOfData) === true) { 
    foreach($arrayOfData as $key=>$value) { 
     $colCounter = 0; 
     if($key == 0) { 
      foreach(array_keys($arrayOfData[0]) as $hKey => $header) { 
       $data .= xlsWriteLabel(0, $hKey, $header); 
      } 
      $rowCounter++; 
     } 
     if(is_array($value) === true) { 
      foreach($value as $val) { 
       $data .= xlsWriteLabel($rowCounter, $colCounter, $val); 
       $colCounter++; 
      } 
      $rowCounter++; 
     } 
    } 
} 
$data .= xlsEOF(); 
return $data; 

} 
+0

原始代碼在'toExcel()'的調用周圍是否回顯'xlsBOF()'和'XLSEOF()'? – Barmar 2015-03-02 23:12:46

+0

我不記得了,對不起。但我相信你可以在網上找到它,因爲這些功能是從一些博客中提取的。 – 2015-04-10 07:22:13