PHP 5.5 Excel-Object通过COM / OLE无法加载文件

时间:2017-01-26 17:20:25

标签: php excel com ole

情况:我目前正在将内部行业Web应用程序从Windows Server 2003 / Apache 2.2 / Php 5.3 / Oracle 10迁移到Windows Server 2012 / Apache 2.4 / PHP 5.5 / Oracle 12c。

应用程序使用扩展名com_dotnet将服务器端安装的excel用于特殊报告。我知道在服务器端使用excel不是使用工作表的首选方法,但它曾经决定这样做,因为

  • PHPExcel不可用或至少不够强大
  • 报告永远不会被多个人使用

详细问题: PHP创建Excel对象确定:

 try {
      $excel = new COM("Excel.application");
      $excel->DisplayAlerts = 0;
      $excel->Visible = 0;
    } catch (Exception $e) {
    ...
    }

但是当我尝试打开文件时出现错误:

 try {
        $excel->Workbooks->Open($fn);
      } catch (Exception $e) {
        $excel->Quit();
        $excel = null;
        // ... Errormessage ...;
        return;
      }

错误消息(在$ e中)表明Excel无法找到或打开所请求的文件。使用Netbeans进行调试时,我可以看到excel实例出现在Windows任务管理器中。

我尝试了什么

  • 确保$ fn中的文件可以打开。将文件权限更改为“所有人”无效。
  • 在路径中使用/和\并尝试用“。
  • 包围路径

不幸的是,安装是德语,错误信息也是如此:

来源:Microsoft Excel

描述:Microsoft Excel kann auf die Datei'd:\ apps \ webroot \ vebill \ share \ reports \ Test.xls'nicht zugreifen。 Dies kannmehrereGründehaben:

  • Der Name des Dokuments oder der Pfad ist nicht vorhanden。
  • Das Dokument wird von einem anderen Programm verwendet。
  • Der Name der Arbeitsmappe,die gespeichert werden soll,ist identisch zu dem Namen eines anderen Dokuments,welcheschreibgeschütztist。

这些条件都不属实。

帮助非常指定!谢谢!

我忘了提及是旧安装使用Excel 2010,新安装使用Excel 2016.

我发现了Procmon :正如我所建议的那样,我使用了procmon并过滤了EXCEL.EXE事件。 EXEL创建文件并打开查询信息,文件上的所有以下操作都具有RESULT SUCCESS!只有一行可能指向错误:

18:43:22,9966615
EXCEL.EXE
5916
的CreateFileMapping
d:\ APPS \ webroot的\ vebill \共享\报告\ TEST.XLS
仅与读者锁定的文件
SyncType:SyncTypeCreateSection,PageProtection:

但是稍后在日志中,Excel会多次访问该文件而不会出现任何错误。

更新1 :我将Apache服务的登录凭据更改为我正在使用的管理员用户 - 错误保持不变:Led Zeppelin alredy知道; - )

更新2 :发现这个SO问题,我的是重复的,遗憾的是这也没有解决。现在尝试转移到PHPExcel ...

PHP fails to open an Excel workbook through COM

0 个答案:

没有答案