2011-12-23 46 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? – 2011-12-23 11:21:35

+0

如果您的Web服務器是Windows,您是否安裝了Excel? – 2011-12-23 11:23:56

+0

Web服務器進程可能沒有權限加載Excel二進制文件。 – 2012-01-14 05:53:50

回答

4

我建議你使用PHPExcel而不是COM。

COM真的很慢,只能在windows上工作,而且你必須在服務器上安裝辦公室,這是浪費許可證。

+1

我不認爲微軟會稱這是浪費許可;) – hakre 2011-12-23 11:35:30

+0

我應該如何使用PHPExcel,我想在php數組中存儲excelsheet數據。 – 2011-12-23 11:45:42

+0

MS可能不會稱之爲浪費許可證,但如果您爲* nix服務器購買許可證,這對您的企業來說是一種浪費 – 2011-12-23 11:45:49

0

您需要將Excel安裝在您的服務器上+ php進程需要正確的權限才能訪問COM應用程序。

過去我們在Office Interop上遇到過很多麻煩,我建議不要這樣做。如果您的進程發生任何事情,Excel實例將在服務器上保持打開狀態,並且這些實例佔用大量內存。

你是關閉使用充分利用的OpenXML規範庫,如Spreadsheetlight更好:

http://spreadsheetlight.com/

您可以從PHP中使用它,這裏有個例子:

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