2016-11-25 1 views
1

yii2プロジェクトでphpoffice/phpexcelプラグインを使用してExcelファイルを読み込もうとしています。 XLS拡張子を持つファイルの場合、プラグインは完璧に動作し、私は内容を読み取ることができていますが、私は日本のファイル名とのxlsx拡張子を持つファイルを使用しようとすると、それは私にそうようなエラー与える:Yii2:phpoffice/phpexcelはHTMLとして.xlsxファイルを指定します

の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プラグインにある種の制限ですか?そうであれば、xlsxとxlsの両方のファイルを正しく読み取ることができる他のyii2拡張を提案できますか?または、ファイルを正しく識別できるようにこれを修正する方法がいくつかありますか?

答えて

0

私は今これを修正することができました。この問題は、zipファイルのファイルエンコーディングに関するもので、PHPExcel_IOFactory :: identifyを修正する前に\PHPExcel_Settings::setZipClass(\PHPExcel_Settings::PCLZIP);を追加しているようです。

0

これらの拡張子のファイルの違いは、this SO answerで最もよく説明されています。

xlsxの場合はExcel2007xlsの場合はExcel5に適切なライター/リーダーを使用する必要があります。

+0

ありがとうございます。私はMS Excel 2013を使用してファイルを作成したので、問題はないと思いますか? – user1597438

+0

あああ.xlsxとaaaa.xlsxは基本的に同じ内容ですが、どちらもMS Excel 2013で作成されているので、なぜその1つしか読み込めないのか分かりません。 – 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

関連する問題