0

ユーザーが送信した xlsx ファイル内の変数を置き換える必要があり、次のようにしています。

  1. .xlsx の名前を .zip に変更します
  2. 一時フォルダーに解凍します
  3. 必要な変更を加える
  4. ファイルを圧縮する
  5. .zip の名前を .xslx に変更します

PHPでプレーンなZipArchiveを使用しています。生成された .xlsx を Excel で開こうとすると、メッセージが表示されて失敗しますformat or extension invalid。一時ファイルを WinRAR で (zip として) 圧縮し、結果のファイルの名前を .xlsx に変更すると、機能します。両方の方法で生成された zip ファイルには同じデータ構造とファイルが含まれていますが、WinRAR ファイルはわずかに大きくなっています (通常の圧縮では 10.2K 対 10.3K)。

ファイルの文字化けしたコードを表示すると、ファイルが異なる順序で表示されていることがわかりましたが、それが原因かどうかはわかりません。手がかりは大歓迎です。

4

1 に答える 1

0

別のコンポーネント PclZip (phpconcept.net/pclzip) で動作するようにしました。どうやら gzip を使用するクラスであり、その出力の名前を .xlsx に変更することは Excel 2007 で問題ありません。

于 2014-01-12T04:35:36.480 に答える