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 插件的某种限制吗?如果是,您能否推荐其他 yii2 扩展,使我能够正确读取 xlsx 和 xls 文件?或者有什么方法可以解决这个问题,以便它可以正确识别文件?

4

2 回答 2

2

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

于 2016-12-01T01:50:20.190 回答
0

请记住,这些扩展名的文件之间存在差异,这在这个 SO 答案中得到了最好的解释。

您必须使用正确的 Writer/Reader: Excel2007forxlsxExcel5for xls

于 2016-11-25T07:27:19.207 回答