2013-02-05 141 views
0

我已經創建了一個帶有phpexcel的excel文件,併成功地將它保存在服務器上。但我真正想要做的就是說瀏覽器即時下載這個文件。有沒有解決方案?
這裏是我的代碼:下載生成後生成excel文件

$objPHPExcel = new PHPExcel(); 

     $objPHPExcel->setActiveSheetIndex(0); 


     $col = 0; 
     foreach ($json[0] as $key => $value) { 
      $a = $key; 
      $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $key); 
      $col++; 
     } 

     $row = 2; 
     foreach ($json as $itemGroup) { 
      $col = 0; 
      foreach ($itemGroup as $key => $value) { 
       $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); 
       $col++; 
      } 
      $row++; 
     } 

     $objPHPExcel->getActiveSheet()->setTitle('Report'); 

     $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
     try { 
      $fileName = date("Y-m-d H:i:s"); 
      $objWriter->save('/uploaded_images/generatedReports/' . $fileName . '.xlsx'); 
      return true; 
     } catch (Exception $exc) { 
      return false; 
     } 

回答

0
header('Location : /uploaded_images/generatedReports/' . $fileName . '.xlsx'); 
0

試圖與連接頭?

header("Content-Disposition: attachment; filename=your_file.xls"); 
0
Berofe returning true in try block you have to use header method for downloadable action 

$filename ="excelreport.xls"; 
header('Content-type: application/ms-excel'); 
header('Content-Disposition: attachment; filename='.$filename); 
echo "your content \t you next tabcontent \n your next line content \t" 
+0

不工作.. 。我使用ajax請求來生成這個報告 – hamedkh

0

您可以設置相應的頭文件,並使用 'PHP://標準輸出' 作爲輸出文件名。

例如

$filename = date("Y-m-d H:i:s").'.xls'; 
header('Content-type: application/ms-excel'); 
header('Content-Disposition: attachment; filename='.$filename); 
$objWriter->save('php://stdout'); 
return true; 
+0

當我使用stdout沒有發送回客戶端 – hamedkh

+0

這是因爲你需要使用php://輸出,而不是'php:// stdout'。 – LSerni

1

看一下例子01simple下載-xlsx.php足見其頭設置,您應該保存到PHP://輸出,而不是一個「命名」的文件