file_get_contents讀取xls一片亂碼?

來源:互聯網
上載者:User
我在網上下了一個xls,本地wps開啟是正常的,但是用file_get_contents或者file()卻得到一篇亂碼。$S = iconv("utf-8","gb2312", $data); 或$S =iconv("gb2312","utf-8", $data);均無任何效果

請教怎麼處理啊。。

謝謝!!


回複討論(解決方案)

那是當然的!
xls 是二進位檔案,你當做文本處理,不出問題才怪呢

那是當然的!
xls 是二進位檔案,你當做文本處理,不出問題才怪呢

謝謝版主,我的php代碼是下載一個xls檔案,我在調試時就發現是亂碼,原來是二進位。
我原本希望下載xls檔案後處理一下,再儲存起來。但是下載下來是亂碼,不知道怎麼樣處理比較好?xls檔案近2M多,比較大。
直接用fopen讀取嗎?

php 處理 xls 檔案可以用 PHPExcel 類庫

php 處理 xls 檔案可以用 PHPExcel 類庫

謝謝,請問能不能通過一個函數直接把當前的二進位流轉為字串?
因為我當前下載的資料就是xls 二進位的,檔案也很大,如果按前面說的,我必須先儲存為xls檔案,然後再讀取這個xls檔案,顯得麻煩。
不知道有沒有辦法可以把當前從網上下載的二進位$file --> $str轉為字串形式?

轉成字串也是亂碼,你看不懂的。

轉成字串也是亂碼,你看不懂的。

php 處理 xls 檔案可以用 PHPExcel 類庫

謝謝兩位,但PHPExcel感覺真不好用啊。主要是速度實在是慢。或者我剛接觸,還在繼續研究,是現在就是拿著PHPExcel的例子裡直接換成我自己的xls,3分鐘過去了,還沒讀完,xls文檔2M,大概6萬行。

我把我現在的問題再描述一下:
1、我先在網上curl 下載了一個xls檔案,此時尚未儲存,因為這個xls檔案我是要處理的,所以我希望在還沒有儲存之前,就把裡面資料處理了。但是debug下,xls檔案全是亂碼。
所以我想問有沒有什麼辦法在此時把這個二進位的資料直接還原成文本,以便於資料處理。

2、假定上面的想法無法實現,那麼我只有那curl 下載的資料先保證成一個xxx.xls檔案格式,然後再用PHPExcel來開啟、讀取這個xls檔案資料,但是現在的情況,我是一邊發帖一邊在用PHPExcel讀取xls,現在5分鐘過去了,仍然沒有讀完。

請教各位高手,有什麼好辦法解決?
畢竟那個2m的文檔,我file()或是file_get_contents 只是一瞬間就讀完了,現在的情況即使PHPExcel最終讀取出來了,但如此緩慢的進度已經讓資料處理失去意義。。。

建議手動轉換成CSV檔案,然後再編寫代碼進行處理,絕對比直接處理XLS檔案要快得多。

PHPEXCEL處理小檔案還行,處理大檔案可別指望它能有多強,雖然提供了幾種緩衝機制,但是對於大檔案基本上是形同虛設。

建議手動轉換成CSV檔案,然後再編寫代碼進行處理,絕對比直接處理XLS檔案要快得多。

PHPEXCEL處理小檔案還行,處理大檔案可別指望它能有多強,雖然提供了幾種緩衝機制,但是對於大檔案基本上是形同虛設。

謝謝!但我程式要求採集--> 資料處理 --> 插入資料庫 這些全部自動完成,其中採集那一步就看到二進位亂碼卡住了....


建議手動轉換成CSV檔案,然後再編寫代碼進行處理,絕對比直接處理XLS檔案要快得多。

PHPEXCEL處理小檔案還行,處理大檔案可別指望它能有多強,雖然提供了幾種緩衝機制,但是對於大檔案基本上是形同虛設。

謝謝!但我程式要求採集--> 資料處理 --> 插入資料庫 這些全部自動完成,其中採集那一步就看到二進位亂碼卡住了....

不明白你說的採集是做什麼。仍然建議轉換成CSV格式,CSV其實就是固定格式的記錄型文字檔。

另外,如果你不適用第三方庫去讀取EXCEL,那麼肯定你讀出來的是亂碼。流檔案和記錄型檔案不一樣。
但轉換成CSV之後,就隨便你怎麼讀了。

另外,如果你不適用第三方庫去讀取EXCEL,那麼肯定你讀出來的是亂碼。流檔案和記錄型檔案不一樣。
但轉換成CSV之後,就隨便你怎麼讀了。

謝謝指點,因為問題很急,我暫時換了種思路解決。
我說的採集,是說這個xls檔案是有php直接網上擷取xls資料,然後直接處理資料
(人工無法幹預),並不是下載到本地電腦人工轉換成csv,除非php有xls -> csv的轉碼,我網上找了,好像不好找。


另外,如果你不適用第三方庫去讀取EXCEL,那麼肯定你讀出來的是亂碼。流檔案和記錄型檔案不一樣。
但轉換成CSV之後,就隨便你怎麼讀了。

謝謝指點,因為問題很急,我暫時換了種思路解決。
我說的採集,是說這個xls檔案是有php直接網上擷取xls資料,然後直接處理資料
(人工無法幹預),並不是下載到本地電腦人工轉換成csv,除非php有xls -> csv的轉碼,我網上找了,好像不好找。

藉助第三方工具轉換XLS-CSV也可以。找個其他語言寫轉換工具,用PHP調用也可以。

PHP Excel類,很多的,很簡單,很好用



另外,如果你不適用第三方庫去讀取EXCEL,那麼肯定你讀出來的是亂碼。流檔案和記錄型檔案不一樣。
但轉換成CSV之後,就隨便你怎麼讀了。

謝謝指點,因為問題很急,我暫時換了種思路解決。
我說的採集,是說這個xls檔案是有php直接網上擷取xls資料,然後直接處理資料
(人工無法幹預),並不是下載到本地電腦人工轉換成csv,除非php有xls -> csv的轉碼,我網上找了,好像不好找。

藉助第三方工具轉換XLS-CSV也可以。找個其他語言寫轉換工具,用PHP調用也可以。

謝謝,因為當時處理這個事情很急,所以迴避了這個難題,我避開了讀取xls換一種思路解決了。這幾天在研究你說的php xls轉換

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.