2010-10-01 10 views
0

я должен заменить переменные внутри посланная пользователем файл XLSX и делаю это так:PHP: Архивирование файлов в XLSX вызывает файл становится недействительным

  1. переименовывать .xlsx на .zip
  2. Распаковать на временную папку-
  3. Сделайте необходимые изменения
  4. Zip файлы
  5. Переименуйте .zip в .xslx

Я использую простой ZipArchive в PHP. Когда я пытаюсь открыть сгенерированный .xlsx в Excel, он выходит из строя с сообщением format or extension invalid. Когда я сжимаю временные файлы с помощью WinRAR (как zip) и переименовываю полученный файл в .xlsx, он работает. Файлы zip, созданные с помощью обоих методов, содержат одну и ту же структуру данных и файлы, но файл WinRAR немного больше (10.2K против 10.3K с нормальным сжатием).

При просмотре искаженного кода файлов я мог видеть, что файлы отображаются в другом порядке, но не знают, является ли это причиной. Любая подсказка была бы весьма признательна.

+0

Zip позволяет использовать несколько различных методов сжатия. Возможно, созданный zip-код не поддерживается Office, а WinRar использует метод, поддерживаемый IS. –

+0

Если вы используете ZipArchive в окне Windows, были некорректные версии php_zip.dll, которые создают поврежденный почтовый индекс при написании –

+0

Спасибо за ваши комментарии до сих пор - но что мне делать? Есть ли альтернативный zipping-компонент для PHP? @Mark Baker: Могу ли я проверить правильность zip-файла? Открытие файла, созданного ZipArchive в WinRAR, не вызывает ошибки, поэтому кажется, что это действительно так. – PeerBr

ответ

0

Я получил его для работы с другим компонентом, PclZip (phpconcept.net/pclzip). Это класс, который, по-видимому, использует gzip, и переименование его результатов на .xlsx отлично с Excel 2007.

 Смежные вопросы

  • Нет связанных вопросов^_^