2

yii2 プロジェクトで phpoffice/phpexcel プラグインを使用して Excel ファイルを読み取ろうとしています。拡張子が xls のファイルの場合、プラグインは完全に機能し、コンテンツを読み取ることができますが、日本語のファイル名と拡張子が 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 拡張機能を提案してもらえますか? または、ファイルを正しく識別できるようにこれを修正する方法はありますか?

4

2 に答える 2

2

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

于 2016-12-01T01:50:20.190 に答える
0

この SO answerで最もよく説明されているこれらの拡張機能のファイルには違いがあることに注意してください。

適切な Writer/Reader: Excel2007forxlsxおよびExcel5forを使用する必要がありxlsます。

于 2016-11-25T07:27:19.207 に答える