【问题标题】:Use of COM Class in PHPPHP中COM类的使用
【发布时间】:2012-01-26 18:38:36
【问题描述】:

我正在使用以下代码访问 php 中的 excel 文件。

        $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;

上面的代码在本地机器上运行,但是当我尝试在任何网络服务器上执行这段代码时,它就不起作用了。有人可以帮助我这段代码的问题在哪里。

【问题讨论】:

  • COM 是特定于 Windows 的。您的网络服务器是否运行 Windows?
  • 如果您的网络服务器是 Windows,您是否安装了 Excel?
  • Web 服务器进程可能没有加载 excel 二进制文件的权限。

标签: php excel com


【解决方案1】:

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

COM真的很慢,只能在windows上运行,而且你必须在服务器上安装office,这很浪费许可证。

【讨论】:

  • 我不认为微软会说这是在浪费许可证;)
  • 我应该如何使用PHPExcel,我想将excelsheet数据存储在php数组中。
  • MS 可能不会称其为浪费许可证,但如果您为 *nix 服务器购买许可证,则对您的业务来说是一种浪费
  • @Mukesh - 尝试先阅读一些关于阅读工作簿的 PHPExcel 文档,然后查看下载中的一些示例...然后询问您是否有任何具体的问题
【解决方案2】:

您需要在服务器上安装 Excel + php 进程需要正确的权限才能访问 COM 应用程序。

过去,我们在使用 Office Interop 时遇到过很多麻烦,我建议不要这样做。如果您的进程发生任何事情,Excel 实例会在服务器上保持打开状态,这些实例会占用大量 RAM。

您最好使用利用 OpenXML 规范的库,例如 Spreadsheetlight:

http://spreadsheetlight.com/

你可以从 PHP 中使用它,这里有一个例子:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2017-06-03
    • 2017-12-06
    • 2012-08-07
    • 2010-11-18
    • 2016-02-01
    • 2018-08-20
    相关资源
    最近更新 更多