2016-11-25 69 views
1

我想为我的yii2项目使用phpoffice/phpexcel插件来读取excel文件。对于XLS扩展名的文件,该插件完美的作品,我能读的内容,但是当我尝试使用与日本的文件名和扩展名的xlsx文件,它给了我,像这样的错误:Yii2:phpoffice/phpexcel标识.xlsx文件为HTML

的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文件?或者有什么方法可以解决这个问题,以便它可以正确识别文件?

回答

0

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

0

请记住,这些扩展名的文件之间有差异,最好在this SO answer中解释。

你必须使用适当的写入/读取器:Excel2007xlsxExcel5xls

+0

谢谢,但我不知道我关注。我使用MS Excel 2013创建了这个文件,所以我不认为它应该有问题吗? – user1597438

+0

あああ.xlsx和aaaa.xlsx基本上具有相同的内容,都在MS Excel 2013中创建,所以我不知道它为什么只能读取其中的一个。 – 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