я должен заменить переменные внутри посланная пользователем файл XLSX и делаю это так:PHP: Архивирование файлов в XLSX вызывает файл становится недействительным
- переименовывать .xlsx на .zip
- Распаковать на временную папку-
- Сделайте необходимые изменения
- Zip файлы
- Переименуйте .zip в .xslx
Я использую простой ZipArchive в PHP. Когда я пытаюсь открыть сгенерированный .xlsx в Excel, он выходит из строя с сообщением format or extension invalid
. Когда я сжимаю временные файлы с помощью WinRAR (как zip) и переименовываю полученный файл в .xlsx, он работает. Файлы zip, созданные с помощью обоих методов, содержат одну и ту же структуру данных и файлы, но файл WinRAR немного больше (10.2K против 10.3K с нормальным сжатием).
При просмотре искаженного кода файлов я мог видеть, что файлы отображаются в другом порядке, но не знают, является ли это причиной. Любая подсказка была бы весьма признательна.
Zip позволяет использовать несколько различных методов сжатия. Возможно, созданный zip-код не поддерживается Office, а WinRar использует метод, поддерживаемый IS. –
Если вы используете ZipArchive в окне Windows, были некорректные версии php_zip.dll, которые создают поврежденный почтовый индекс при написании –
Спасибо за ваши комментарии до сих пор - но что мне делать? Есть ли альтернативный zipping-компонент для PHP? @Mark Baker: Могу ли я проверить правильность zip-файла? Открытие файла, созданного ZipArchive в WinRAR, не вызывает ошибки, поэтому кажется, что это действительно так. – PeerBr