Я пытаюсь использовать плагин 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
Файлы следующие:
Только あ あ あ .xlsx не может быть прочитано, но все остальное в порядке. Это какое-то ограничение для плагина phpoffice / phpexcel? Если да, можете ли вы предложить другие расширения yii2, которые позволят мне правильно читать файлы xlsx и xls? Или есть какой-то способ исправить это, чтобы он мог правильно идентифицировать файлы?
Мне удалось это исправить сейчас. Кажется, проблема в кодировке файла в zip-файле, добавляя \PHPExcel_Settings::setZipClass(\PHPExcel_Settings::PCLZIP);
до того, как PHPExcel_IOFactory :: identifier это исправил.
Помните, что есть разница между файлами этих расширений, которая лучше всего объясняется в этот так ответ.
Вы должны использовать правильный Writer / Reader: Excel2007
за xlsx
а также Excel5
за xls
,