phpexcel檔案是一款開源的php表格操作外掛程式,只要用到excel資料匯入匯出的朋友大多數人都選擇此款外掛程式了,但在使用中也會有問題出現,下面來看問題分析研究。
PHPExcel是PHP中功能最強大的匯入、匯出、操作Microsoft Excel的開源項目。但是它體系複雜,有時會讓人難以掌控。
PHPExcel匯出Excel表的使用方法網上已經很多了,本文就不贅述。不過,在使用過程中,我卻發現了一個莫名其妙的問題:那就是使用PHPExcel自動匯出excel的檔案有時候能夠正常匯出並開啟,有時候產生的excel檔案卻無法開啟,Excel2007提示“發現無法讀取的內容”。
使用文字編輯器開啟產生的Excel檔案,發現一行提示“Fatal error: Call to a member function setValue() on a non-object in PHPExcel/Calculation/FormulaParser.php on line 431”。
經過仔細而又痛苦的檢查發現,原來是因為在寫入儲存格的文本值中,有些值以等號開頭,例如“====中國青年報...”,結果PHPExcel在寫入這個儲存格的時候,將其判定為公式,於是調用公式解析器去計算相應的值,但是又無法正確進行計算(因為本來就不是公式嘛),所以就導致產生的excel檔案無法開啟。
解決辦法非常簡單,
就是在往excel儲存格寫入文本值之前,先過濾掉等號“=”,即可。
以下是兩種錯誤的解決辦法:
(1)Fatal error: Maximum execution time of 30 seconds exceeded解決錯誤方法
需要修改php.ini檔案,如果是使用Ubuntu 9.04 Server的伺服器,可以在/etc/php5/apache2/下找到php.ini檔案,如果是Freebsd,可以在/usr/local/lib/下找到php.ini檔案。使用sudo許可權編輯下面的語句:
將如下語句:
max_execution_time = 30
修改為:
max_execution_time = 300
也就是將PHP指令碼最長執行時間從30秒延長到300秒。
然後重啟一下Apache伺服器,如果是Ubuntu Server的伺服器,可以使用如下命令:
sudo /etc/init.d/apache2 restart
(2)Fatal error: Allowed memory size of 16777216 bytes exhausted 的解決辦法
一樣地需要修改php.ini檔案:
將如下語句:
memory_limit = 16M
修改為:
memory_limit = 512M
也就是將PHP指令碼所能夠申請的記憶體從16M擴大到512M。具體數字可以根據自己的需要確定。
一樣需要重啟Apache伺服器。
需要注意的是:
(1)以上的修改可能存在一定風險,例如給伺服器造成過大的負擔。所以請再三確認是否有必要給PHPExcel或者是其他PHP程式開放更大的記憶體空間以及更長的執行時間。
(2)修改完php.ini之後,只有重啟Apache之後,新的設定才會生效。
(3)php.ini中的設定,請根據自己伺服器的情況量力而行。
http://www.bkjia.com/PHPjc/632191.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632191.htmlTechArticlephpexcel檔案是一款開源的php表格操作外掛程式,只要用到excel資料匯入匯出的朋友大多數人都選擇此款外掛程式了,但在使用中也會有問題出現,下面...