2011-12-23 58 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