PHP7.2环境中PHPExcel无法导出Excel
問題
這幾天接到一個bug,說的是有某一個后臺的列表頁有一個excel導出功能,最近不能使用了,我立即登陸系統發現確實如此,但是這個上線項目已經運行長達2年,中間并沒有出現問題,于是我拉出源碼進行分析,但是代碼看不出明顯錯誤,于是馬上進行斷點測試。
分析
經過測試發現問題出在PHPExcel上面,執行方法save()會報500 Internet sever error。根據經驗這一般是權限問題,我馬上檢查文件夾權限,但是一切正常。這就很奇怪了,于是查閱資料用了網上所有的方法依然沒有恢復,就在我一籌莫展的時候,突然想起前段時間升級了7.2版本PHP,于是我動手查閱資料,果然發現問題!
PHPExcel官方已不再維護了這個項目了,PHPExcel的版本停止在1.8。那個時候也沒有7.2,所有兼容性當然沒有考慮。由于官方已經停止維護我們也不能獲取補丁,那我們只能考慮換一個插件去處理。
選擇
官方團隊在github上又起了一個新項目,叫PhpSpreadsheet,新項目使用了大量的php新特性,比如命名空間,PSR標準,性能也比PHPExcel高了不少。GItHub點這里
如果只是單獨的導出excel且數據量巨大的話,我推薦PHP_XLSXWriter,它并沒有PHPExcel功能豐富,很多高級操作比如凍結表頭,并不具備,但是它導出速度非常快,非常適合于數據量特別大,報表格式不是很復雜的導出需求。GitHub點這里
其大概的用法可以參考大佬寫的博文,戳這里
思考
最終我選擇PHP_XLSXWriter完成替換,從而解決BUG,從這次BUG中我意識到一個問題,每當升級PHP版本時,插件相應的升級刻不容緩。就像php7.2剛出來的時候YII2等主流框架會報致命錯誤,其原因就是7.2將Object作為了關鍵字,而框架將其定義為類。所以導致錯誤,一樣是不向下兼容的錯誤。盡量避免錯誤,需要在每次更新版本前多去研究其特性,才可能規避BUG,最后說一句,祝大家永無BUG。
總結
以上是生活随笔為你收集整理的PHP7.2环境中PHPExcel无法导出Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google-Analytics 学习与
- 下一篇: 动态规划算法php,php算法学习之动态