2010-10-01 44 views
0

我必須更換用戶提交的XLSX文件中的變量和我做這種方式:PHP:荏苒文件,XLSX導致文件變得無效

  1. 重命名的.xlsx爲.zip
  2. 解壓到一個臨時文件夾
  3. 進行必要的更改
  4. 壓縮檔案
  5. 重命名的.zip到.xslx

我在PHP中使用普通ZipArchive。當我嘗試在Excel中打開生成的.xlsx時,失敗並顯示消息format or extension invalid。當我用WinRAR壓縮臨時文件(如zip),並將結果文件重命名爲.xlsx時,它可以工作。使用這兩種方法生成的zip文件包含相同的數據結構和文件,但WinRAR文件稍大(正常壓縮時爲10.2K和10.3K)。

查看文件的亂碼時,我可以看到文件以不同的順序出現,但不知道是否是原因。任何線索將不勝感激。

+0

Zip允許使用幾種不同的壓縮方法。可能生成的壓縮文件不受Office支持,而WinRar使用的是受支持的方法。 – 2010-10-01 04:05:29

+0

如果您在Windows機器上使用ZipArchive,在編寫 – 2010-10-01 08:16:44

+0

時,出現了一些php_zip.dll的bug版本,它會創建損壞的zip文件感謝您的評論 - 但我應該怎麼做?有沒有一個替代PHP的壓縮組件? @Mark Ba​​ker:我可以測試zip文件的有效性嗎?在WinRAR中打開ZipArchive生成的文件不會引發錯誤,所以它似乎有效。 – PeerBr 2010-10-01 13:21:29

回答

0

我把它與另一個組件PclZip(phpconcept.net/pclzip)一起使用。這是一個顯然使用gzip的類,並且將其輸出重命名爲.xlsx對於Excel 2007來說是很好的。