phpexcel 很常用,因為可以用來讀取excel,又可以輸出,之前在用時就遇到一個問題,輸出下載時出現亂碼,之前由於趕時間,就沒有用瀏覽器直接下載,而是提供下載鏈接,因為有些不同;
$objWriter->save(‘php://output’);
上面是直接跳出下載提示,不會存在伺服器
$objWriter->save($file);
這個就會存一份在伺服器中,$file就是你定義的名字,路徑等。
那麼直接下載亂碼如何解決,筆者看了很多資料,google了不少,終於解決了,在此總結。
因為程序用了smarty,因此需要考慮這問題。
首先是header()問題,這些header 是提供信息給瀏覽器看,因此這些信息最好放在<?php 下一行,因為header前不能有空行,不然會有錯誤。header 錯誤可能會導致不會popup 提示下載顯示錯誤,解決了就會提示下載。
除了這個,還會有亂碼問題,這個又是關於文件dom 問題,雖然很多人在網上說不能有空行,不過一個文件include 了很多文件,究竟如何追查?太笨了吧,我先用了這笨的方法,把文件轉成UTF-8,然後又移除DOM,結果沒用。最後在官方那找到好用的東西,在header()前加上
ob_end_clean();
就這麼一句,亂碼解決了!
就這麼簡單,但花了幾個小時嘗試,算是得益。