2016-11-25 68 views
1

我想爲我的yii2項目使用phpoffice/phpexcel插件來讀取excel文件。對於XLS擴展名的文件,該插件完美的作品,我能讀的內容,但是當我嘗試使用與日本的文件名和擴展名的xlsx文件,它給了我,像這樣的錯誤:Yii2:phpoffice/phpexcel標識.xlsx文件爲HTML

的DOMDocument :: loadHTML( ):實體中的CDATA 0x3中的無效字符,行:1.

我試圖調查PHPExcel_IOFactory :: identify。調查函數,我遇到了IOFactory類中的createReaderForFile,並且在檢查這裏設置的擴展類型時,它會顯示'Excel2007',但由於某種原因,在該過程的最後,該文件仍然被標識爲HTML。

爲了進一步描繪的問題,我的文件有不同的擴展名和名稱,但內容基本相同,像這樣:

col1    col2   col3 
aaaa    bbbb   cccc 

的文件如下:

  1. あああ的.xls(可讀取)
  2. あああ.XLSX(不能被讀取)
  3. aaaa.xls(可讀取)
  4. aaaa.xlsx(可讀取)

只有あああ的.xlsx無法讀取,但其餘的罰款。這是對phpoffice/phpexcel插件的某種限制嗎?如果是這樣,你能否推薦其他的yii2擴展,使我能夠正確讀取xlsx和xls文件?或者有什麼方法可以解決這個問題,以便它可以正確識別文件?

回答

0

我已經設法解決這個問題。這個問題似乎是關於zip文件上的文件編碼的問題,在PHPExcel_IOFactory :: identify之前加上\PHPExcel_Settings::setZipClass(\PHPExcel_Settings::PCLZIP);解決了它。

0

請記住,這些擴展名的文件之間有差異,最好在this SO answer中解釋。

你必須使用適當的寫入/讀取器:Excel2007xlsxExcel5xls

+0

謝謝,但我不知道我關注。我使用MS Excel 2013創建了這個文件,所以我不認爲它應該有問題嗎? – user1597438

+0

あああ.xlsx和aaaa.xlsx基本上具有相同的內容,都在MS Excel 2013中創建,所以我不知道它爲什麼只能讀取其中的一個。 – user1597438

+0

這不是關於Excel本身,而是關於PHPExcel庫,請參閱[xlsx]的示例行(https://github.com/PHPOffice/PHPExcel/blob/1.8/Examples/01simple-download-xlsx.php#L87)和[xls](https://github.com/PHPOffice/PHPExcel/blob/1.8/Examples/01simple-download-xls.php#L87) – Bizley