PHP: при архивировании файлов в формате xlsx файл становится недействительным - PullRequest
0 голосов
/ 01 октября 2010

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

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

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

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

1 Ответ

0 голосов
/ 12 января 2014

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

...