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

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

我在本地计算机上configuration了DCOM设置,以授予用户本地访问,本地启动和本地激活权限以及完全控制configuration权限。 我也尝试了所有三个标识设置。

这是我正在使用的代码:

<?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位)

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

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

这还带来了额外的好处,使我们能够使用Excel的界面进行文体修改,这比以编程方式快得多。