Yii2: phpoffice / phpexcel идентифицирует файл .xlsx как HTML

Я пытаюсь использовать плагин phpoffice / phpexcel для моего проекта yii2 для чтения файлов Excel. Для файлов с расширением xls плагин работает отлично, и я могу читать содержимое, но когда я пытаюсь использовать файлы с японскими именами файлов и расширением xlsx, он выдает мне ошибку примерно так:

DOMDocument :: loadHTML (): Неверный символ в CDATA 0x3 в Entity, строка: 1.

Я пытался исследовать PHPExcel_IOFactory :: identifier. Исследуя функцию, я наткнулся на createReaderForFile в классе IOFactory, и при проверке установленного здесь типа расширения он говорит «Excel2007», но по какой-то причине в самом конце процесса файл все еще идентифицируется как HTML.

Чтобы в дальнейшем описать проблему, мои файлы имеют разные расширения и имена, но в основном одно и то же содержимое, например:

col1               col2           col3
aaaa               bbbb           cccc

Файлы следующие:

  1. X あ あ .xls (можно прочитать)
  2. X あ あ .xlsx (не читается)
  3. aaaa.xls (можно прочитать)
  4. aaaa.xlsx (можно прочитать)

Только あ あ あ .xlsx не может быть прочитано, но все остальное в порядке. Это какое-то ограничение для плагина phpoffice / phpexcel? Если да, можете ли вы предложить другие расширения yii2, которые позволят мне правильно читать файлы xlsx и xls? Или есть какой-то способ исправить это, чтобы он мог правильно идентифицировать файлы?

2

Решение

Мне удалось это исправить сейчас. Кажется, проблема в кодировке файла в zip-файле, добавляя \PHPExcel_Settings::setZipClass(\PHPExcel_Settings::PCLZIP); до того, как PHPExcel_IOFactory :: identifier это исправил.

1

Другие решения

Помните, что есть разница между файлами этих расширений, которая лучше всего объясняется в этот так ответ.

Вы должны использовать правильный Writer / Reader: Excel2007 за xlsx а также Excel5 за xls,

0

По вопросам рекламы [email protected]