2014-11-04 128 views
0

我想用PHPExcel下載excel文件,就像下載excel文件很好,但是excel文件中的數據全是廢話..這不是我所期望的。我通過了非常基本的方法來測試我的Excel工作表數據輸出。使用PHPExcel下載Excel文件

這裏是代碼我'嘗試

else if($request->p['type'] == 'excel') 
    { 

     $report_type_name = "Graph Survey Report"; 
     $ExcelReport = new ExcelApExport($sections, $group_definition, $questions, $sample_corrections); 
     $objPHPExcel = $ExcelReport->export($sets, $disp_filter); 
     header('Content-Type: application/vnd.ms-excel'); 

     header("Content-Disposition: attachment; " 
      . escape_for_content_disposition("{$report_name} - {$report_type_name} - " . date("Y-m-d.H.i") . ".xls")); 
     header('Cache-Control: max-age=0'); 

     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 

     $objWriter->save('php://output'); 

     exit; 
    } 

也讓我在這裏對象,並調用此方法phpexcel

public function export($Sets, $disp_filter) 
{ 

    $objPHPExcel = new PHPExcel(); 
    $objPHPExcel->getProperties()->setTitle("Offic excel Test Document"); 
    $objPHPExcel->getProperties()->setSubject(" Test Document"); 
    $objPHPExcel->getProperties()->setDescription("Test document for XLS, generated using PHP  classes."); 
    //echo date('H:i:s') . " Add some data\n"; 
    $objPHPExcel->setActiveSheetIndex(0); 
    $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello'); 
    $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!'); 
    $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello'); 
    $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!'); 

    return $objPHPExcel; 

} 

here is what i get in my downloaded excel file

請你可以建議我,爲什麼這個垃圾數據顯示在我的文件中而不是預期的數據。 由於事先

+0

幾乎是肯定的,因爲東西在你的腳本輸出空白字符(可能是一個新行)之前,該文件被保存到php://輸出 – 2014-11-04 15:38:01

+0

我沒有得到的代碼的一部分,我在哪裏添加任何空格,你可以請我建議我在哪裏可以在代碼中修復它 – Maggi 2014-11-04 15:46:02

+1

我不知道....除了您發佈的兩個小方法外,我看不到您的代碼....如果您絕對必須嘗試在sav之前執行ob_clean() e() – 2014-11-04 15:51:54

回答

1
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 

這是.xls的X文件作家。 (參見:https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/01simple-download-xlsx.php

所以正確的標題是:

// Redirect output to a client’s web browser (Excel2007) 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header("Content-Disposition: attachment; " 
     . escape_for_content_disposition("{$report_name} - {$report_type_name} - " . date("Y-m-d.H.i") . ".xlsx")); //.xlsX! 

舊的.xls,文件的作者是:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 

參見:https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/01simple-download-xls.php

+0

我試過這兩套: 1.在一個頭文件中使用xlsx擴展名,在createWriter中使用Excel2007,這使我不在Excel中打開的xlsx文件,我通過文本編輯器打開它,它再次將所有的垃圾寫入它,而不是我希望的文本。 2.我也嘗試了一套Excel5和xls擴展,它給了我上面的結果。 – Maggi 2014-11-04 16:07:08

2

它需要基本

ob_clean();

保存對象之前。

0

我最近就遇到了這個問題,並在這裏發現另一篇文章,這是非常有益的,如果烏拉圭回合仍然有)使用ob_clean後問題(

check this post