用我的數據加載PHPExcel對象後,我想直接輸出內容到一個PHP變量,而不是寫入文件。我錯過了這樣做的方法,因爲看起來唯一的保存方法是保存到磁盤。如何使用PhpExcel將我的Excel電子表格寫入變量?
回答
您可以使用寫入器保存到磁盤,或保存到php://輸出。如果後者,你可以使用輸出緩衝來捕獲該輸出,然後存儲在一個變量....不知道爲什麼你想這樣做。
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_start();
$objWriter->save('php://output');
$excelOutput = ob_get_clean();
由於PHPExcel將文件寫入到磁盤在任何情況下,如果捕獲標準輸出,什麼內部發生的情況是,該文件被寫入到磁盤,然後從磁盤讀取(或刪除),打印到stdout然後在輸出緩衝區中捕獲。
你不妨這樣做:
$tmpfile = tempnam($tmp_dir, 'phpxltmp');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($tmpfile);
$excelOutput = file_get_contents($tmpfile);
unlink($tmpfile);
這是一種常識,關於如何處理這個問題,但這種方法有很多缺點。 您創建/使用需要更多操作/時間/空間的磁盤。 如果此腳本在多個實例或重疊中運行,則需要爲每個實例生成一個不同的文件。這可能會導致腐敗/問題。 該OP已經直接說一個變量,而不是一個文件,然後到一個變量。 – Mayhem 2017-07-13 04:24:18
答案已經解決了這些缺點。 'tempnam'爲每個實例創建一個不同的文件,並且由於PHPExcel在任何情況下都使用一個文件,所以它顯然是「直接變量」的方法,效率較低。在許多情況下,可以使用'readfile'或流處理來避開內存問題並進一步提高性能。雖然接受的答案似乎更直接,這本身就很有價值,但我仍然認爲*這個*應該是被接受的答案,或者是一個可信的選擇。 – LSerni 2017-10-20 07:47:58
- 1. PHPExcel setCellValueByColumnAndRow不將數據寫入電子表格
- 2. PHPExcel將PHP變量傳遞給電子表格屬性
- 3. 填寫Excel電子表格使用C#
- 4. 使用PHPExcel清除電子表格
- 5. 如何使用epplus將我的html表格寫入excel文件
- 6. 使用SQL語句將Excel電子表格插入Oracle表格
- 7. 如何使用PHP將Alt + Enter寫入電子表格?
- 8. PHPExcel:下載電子表格
- 9. 如何使用gspread將表格(列表清單)寫入Google電子表格
- 10. Google電子表格腳本:如何將變量寫入特定字段?
- 11. 將Excel電子表格導入到phpMyAdmin
- 12. 將nsstrings放入excel電子表格中?
- 13. 將Excel電子表格導入Access
- 14. 將Excel電子表格導入PostgreSQL
- 15. c#使用XmlWriter寫入電子表格
- 16. 使用C#從Excel電子表格讀取/寫入#
- 17. 如何將Excel電子表格導入Visual Basic應用程序
- 18. 使用VBA將表單值插入Excel電子表格
- 19. 在excel文件中寫入excel電子表格的python字典
- 20. 將變量表從python寫入excel
- 21. 將數組寫入電子表格
- 22. 如何將Excel電子表格中的數據導入ORACLE APEX?
- 23. 如何使用ruby寫入現有的google電子表格?
- 24. 無法使用PhpExcel將數據插入Excel表格
- 25. 如何使用GemBox在Excel電子表格中插入空行?
- 26. 如何使用嵌入圖生成Excel電子表格?
- 27. 使用PHPExcel在電子表格中創建表格
- 28. 我如何使用PowerShell導出到Excel電子表格
- 29. 使用Toad將Excel電子表格導入到Oracle
- 30. 使用VB.Net將Excel電子表格導入到MySQL數據庫
謝謝。如果我在像symfony這樣的框架內使用這個,我可能需要將內容從excel服務傳遞給某種類型的輸出服務或控制器。我寧願避免寫入磁盤的打擊。 – Aaron 2012-02-28 18:55:56
你意識到,它可能是令人難以置信的內存飢渴,把整個文件保存在PHP內存中 – 2012-02-28 21:12:41
一個公平的問題。感謝您的建議。 – Aaron 2012-02-29 02:02:22