【问题标题】:php excel com_exception: unable to lookup 'Workbooks': Access is deniedphp excel com_exception:无法查找“工作簿”:访问被拒绝
【发布时间】:2014-09-01 10:10:57
【问题描述】:

我正在尝试使用 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 位)

【问题讨论】:

    标签: php windows excel com


    【解决方案1】:

    我从来没能解决这个问题,所以我们不得不想出一个不同的解决方案,它实际上更稳定,性能更好。希望它可以帮助其他可能遇到相同问题的人。

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

    这还有一个额外的好处,就是允许我们使用 Excel 的界面进行风格更改,这比以编程方式进行要快得多。

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 2020-03-31
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多