php excel com_exception:无法查找“工作簿”:访问被拒绝

时间:2014-07-10 21:29:47

标签: php windows excel com

我正在尝试使用PHP的COM接口来查询数据库并从Excel工作簿中的数据创建数据透视表。

我已在本地计算机上配置DCOM设置,以授予用户本地访问,本地启动和本地激活权限以及配置权限的完全控制权限。我也尝试了所有三种身份设置。

以下是我正在使用的代码:

<?php

$application = new COM("Excel.Application") or die("Unable to load Excel.");
$workbook = $application->Workbooks;
$workbook = $workbook->Add();
$sheet = $workbook->Worksheets(1);
$sheet->Activate();
$application->Quit();

?>

这是我得到的错误:

PHP Fatal error:  Uncaught exception 'com_exception' with message 'Unable to lookup `Workbooks': Access is denied.

这与我之前收到的错误不同,后者告诉我,我无法访问Excel COM对象。设置权限已修复。

环境是:

  • Windows Server 2012 R2
  • Excel 2010(64位)
  • PHP 5.5.9(64位)

1 个答案:

答案 0 :(得分:0)

我从来没有能够解决这个问题,所以我们必须提出一个不同的解决方案,它实际上更稳定,性能更好。希望它可以帮助其他任何可能遇到同样问题的人。

我们的数据库是MySQL(但大多数数据库都应该这样),所以我们将查询移动到自己的脚本中,并使用mysql客户端将结果直接写入文件。 然后,我们创建了一个excel模板,其中包含与文件的数据连接,并使用该连接作为数据透视表的数据源。 最后,我们编写了一个简短的vbscript来打开模板,刷新数据透视表,然后将文件保存为新副本。

这样做的另一个好处是允许我们使用Excel界面进行风格更改,这比以编程方式进行更快速。