PHPExcelパッケージをダウンロードしたばかりで、Excelスプレッドシートをインポートしようとしましたが、エラーZipArchive not found
。私はWindowsで作業していますが、サーバーはLinux上にあります。私はチェックした php.ini
php_Zipが無効になっているかどうかを確認しますが、それもありませんでした。
PECLでインストールしようとしました:$ pecl install Zip
No releases availble for package "pecl.php.net/Zip" Cannot initialize 'channel://pecl.php.net/Zip', invalid or missing package file Package "channel://pecl.php.net/Zip" is not valid install failed
また、pear install Zip-1.10.2.tgz
しかし、ほとんど同じメッセージを受信しました。
私はサーバーへのルート権限を持っていません、多分それは本当ですか?とにかく、これで私を助けてもらえますか?
Excel 2007以降でデフォルトの形式として使用されるOfficeOpenXMLなどの特定のスプレッドシートファイル形式には、ZipArchiveが必要です。 PHPの最新バージョンでは、ZipArchiveは常に使用可能ですが、PHP 5.3より前では、PHP拡張機能として手動でインストールする必要がありました。
@brioshejeが言うように、ZipArchiveをPHPにインストール/有効化していない場合は、次を使用できます。
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
PCLZipは、PHPの組み込みZipArchiveクラスの代替としてPHPExcelディストリビューションに含まれていますが、かなり遅いです。 PCLZipを有効にすると、ZipArchiveがなくても、Zipベースのスプレッドシート形式で作業できます。
ただし、最初にPCLZip(元はPHPExcel 1.7.6)をバンドルしたときは、Zipベースの形式を読み取るときではなく、Zipベースの形式を記述するときのオプションにすぎませんでした。 PHPExcel 1.8.0でこれを変更したため、PCLZipを有効にすると、Zipベースのフォーマットを読み取ったり、書き込んだりできるようになりました。
PHPEXcel Readerのドキュメントでは、さまざまなスプレッドシート形式について詳しく説明し、Zipベースの形式について説明しています。
私の場合、PHP 5.4
PHPExcelを使用すると、この例外が発生しました。
FatalErrorException in Excel2007.php line 94: Class 'ZipArchive' not found
PHPExcel/Reader/Excel2007.phpにこの行を追加して解決しました
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
getZipClassメソッドを呼び出す前。
$zipClass = PHPExcel_Settings::getZipClass();
Linuxマシンにphp-ZipおよびZipプログラムのようなphpの拡張機能をインストールする必要があります。
簡単な解決策を見つけました
次に、サイトを更新してExcelファイルをダウンロードします
簡単な方法は、PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
を呼び出す直前にスクリプトに$objWriter->save();
を挿入することです。
これは私のために働いた。
よろしく!