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

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

DOMDocument :: loadHTML():实体中的CDATA 0x3中的无效字符,行:1。

我试图调查PHPExcel_IOFactory :: identify。 调查函数,我遇到了IOFactory类中的createReaderForFile,并在检查这里设置的扩展types时,它说“Excel2007”,但由于某种原因,在过程的最后,该文件仍被标识为HTML。

为了进一步描述这个问题,我的文件有不同的扩展名和名称,但基本上是这样的内容:

col1 col2 col3 aaaa bbbb cccc 

这些文件如下:

  1. あああ.xls(可以阅读)
  2. あああ.xlsx(不能被读取)
  3. aaaa.xls(可以读取)
  4. aaaa.xlsx(可以读取)

只有あああ.xlsx不能阅读,但其余的都很好。 这是对phpoffice / phpexcel插件的某种限制吗? 如果是这样,你能build议其他yii2扩展,这将使我能正确地阅读xlsx和xls文件? 还是有一些方法来解决这个问题,以便它可以正确识别文件?

请记住这个扩展的文件之间的区别,在这个答案中最好的解释。

您必须使用正确的Writer / Reader: Excel2007 for xlsxExcel5 for xls

我已经设法解决这个问题。 这个问题似乎是关于zip文件上的文件编码,join\PHPExcel_Settings::setZipClass(\PHPExcel_Settings::PCLZIP); 在PHPExcel_IOFactory :: identify之前解决了它。