2011-12-23 10 views
0

次のコードを使用して、PHPのExcelファイルにアクセスしています。PHPでのCOMクラスの使用

 $excel = new COM("Excel.application",,) or die ("ERROR: Unable to instantaniate COM!\r\n"); 

// DATA RETRIEVAL 
$Workbook = $excel->Workbooks->Open($file) or die("ERROR: Unable to open " . $file . "!\r\n"); 
$Worksheet = $Workbook->Worksheets($sheet); 
$Worksheet->Activate; 

上記のコードはローカルマシンで動作しますが、このコードを任意のWebサーバーで実行しようとすると動作しません。誰かが私を助けますか?このコードのどこに問題がありますか?

+6

COMはWindows固有のものです。あなたのWebサーバーはWindowsを実行していますか? –

+0

あなたのWebサーバーがWindowsの場合は、Excelがインストールされていますか? –

+0

WebサーバープロセスにExcelバイナリをロードする権限がない可能性があります。 –

答えて

4

COMの代わりにPHPExcelを使用するように助言します。

COMは非常に遅く、Windowsのみで動作します。さらに、ライセンスを無駄にするサーバーにオフィスをインストールする必要があります。

+1

私はマイクロソフトがライセンスの無駄だとは思わないと思っています;) – hakre

+0

PHPExcelをどうすればいいですか?私はPHPの配列でExcelシートのデータを保存します。 –

+0

MSはそれをライセンスの浪費とは呼んでいないかもしれませんが、* nixサーバのライセンスを購入すると、あなたのビジネスにとっては無駄です。 –

0

あなたのサーバーにExcelをインストールする必要があります+ COMアプリケーションにアクセスするには、PHPプロセスに正しいアクセス権が必要です。

過去にOffice Interopに多くの問題がありましたが、私はそれに反対しています。プロセスに何か問題が発生した場合、Excelインスタンスはサーバー上で開いたままになり、これらのインスタンスは多くのRAMを占有します。

あなたはこのようなSpreadsheetlightなどOpenXMLの仕様を活用したライブラリを使用したほうが良いです:

http://spreadsheetlight.com/

あなたはPHPからそれを使用することができ、例はここにあります:

http://www.drupalonwindows.com/en/blog/importing-excel-data-php-openxml-and-spreadsheetlight-drupal-example

関連する問題