关于php:Yii2:phpoffice / phpexcel将.xlsx文件标识为HTML

Yii2: phpoffice/phpexcel identifies .xlsx file as HTML

我正在尝试为我的yii2项目使用phpoffice / phpexcel插件来读取Excel文件。对于具有xls扩展名的文件,该插件可以正常工作,并且我能够读取内容,但是当我尝试使用具有日语文件名和xlsx扩展名的文件时,它给了我这样的错误:

DOMDocument::loadHTML(): Invalid char in CDATA 0x3 in Entity, line: 1.

我尝试调查PHPExcel_IOFactory :: identify。在研究该功能时,我在IOFactory类中遇到了createReaderForFile,并且在检查此处设置的扩展类型时,它显示为" Excel2007",但由于某种原因,在该过程的最后,该文件仍被标识为HTML。

为了进一步说明问题,我的文件具有不同的扩展名和名称,但内容基本相同,如下所示:

1
2
col1               col2           col3
aaaa               bbbb           cccc

文件如下:

  • x.xls(可以读取)
  • あああ.xlsx(无法读取)
  • aaaa.xls(可以读取)
  • aaaa.xlsx(可以读取)
  • 仅あああ.xlsx无法读取,但其余都可以。这对phpoffice / phpexcel插件有某种限制吗?如果是,您是否可以建议其他yii2扩展名使我能够正确读取xlsx和xls文件?还是有某种方法可以解决此问题,以便它可以正确识别文件?


    我已经设法解决此问题。 问题似乎与zip文件上的文件编码有关,在PHPExcel_IOFactory :: identify之前添加\\PHPExcel_Settings::setZipClass(\\PHPExcel_Settings::PCLZIP);修复了该问题。


    请记住,这些扩展名的文件之间是有区别的,最好在此SO答案中加以说明。

    您必须使用适当的Writer / Reader:xlsx使用Excel2007xls使用Excel5