2012-10-05 35 views
4

已經創建了一個PHPExcel程序後,最後一步是保存工作表,要做到這一點,我想應用這些規則,從而產生在Excel 2007中的文件:PHPExcel_IOFactory :: createWriter導致錯誤的行爲

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="workbook1.xlsx"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 

不但得不到的Excel2007文件,用任何一種瀏覽器的ouptut是一樣的東西:

7時31分12秒創建新PHPExcel對象7時31分12秒設置屬性7時31分12秒 添加一些數據07:31:12重命名錶格07:31:12寫入Excel2007格式 PKæ;È< - ![[Content_Types] .xml「MNÃ0...÷= ...å-Jܲ@%íÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÃÂÃÂ」 ü‰Ï|£由‰] * Y「Hª†F|Üp4SùØH¤ß¸Aªμ\ I「OAA†ŸŽXñJD£-dÄÙHì .....

我試着用不同的瀏覽器,但我得到相同的結果。在另一方面,如果我保存該文件下面這些行,它工作正常:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('/usr/local/myWorkbooks/workbook1.xlsx'); 

任何想法,爲什麼不通過我的瀏覽器工作?在此先感謝您的幫助

回答

0

如果您正在將輸出流式傳輸到php://輸出,那麼您不得在該輸出流中回顯其他任何內容。 你清楚地呼應線:

07:31:12 Create new PHPExcel object 
07:31:12 Set properties 
07:31:12 Add some data 
07:31:12 Rename sheet 
07:31:12 Write to Excel2007 format 

輸出的Excel文件之前本身

刪除那些回聲線

這是標準的PHP的行爲,並在此被數以千計的回答的問題過去的時間:回聲轉到php://輸出....我很驚訝你也沒有得到「標題已發送」錯誤以及

+0

謝謝你的回答。在我的代碼中沒有回聲,我之前的消息中顯示的錯誤消息的標題與輸出無關,因此造成的不便。 以下是下面的輸出,由於未知的原因,我無法從我的瀏覽器生成Excel 2007文件,有什麼想法爲什麼? 警告:無法修改標題信息 - 已在/homez.40/foodbank/www/phpexcel/Tests/發送的標題(輸出開始於/homez.40/foodbank/www/phpexcel/Tests/testyves3.php:9) testyves3.php on line 77 PK-;EA½Ha¹rä[Content_Types] .xml「MNÃ...ñ」ò%nY「švAa\t•(0¤¤êØ-Çý»=」¤「Ô」*Ùd%ï... ... –

+0

根據您剛剛添加的消息:「輸出開始於/homez.40/foodbank/www/phpexcel/Tests/testyves3.php:9」意味着某些內容正在發送至php://輸出在/homez.40/foodbank/www/phpexcel/Tests/目錄中的testyves3.php腳本的第9行根據你在原始問題中顯示的輸出結果,「某事」將成爲「 07:31:12創建新的PHPExcel對象「。 –

+0

請記住?>和<?之間的任何內容。在你的腳本中的PHP也將被髮送到php://輸出就是如果你迴應它 –