情况:我目前正在将内部行业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不是使用工作表的首选方法,但它曾经决定这样做,因为
详细问题: 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任务管理器中。
我尝试了什么:
不幸的是,安装是德语,错误信息也是如此:
来源:Microsoft Excel
描述:Microsoft Excel kann auf die Datei'd:\ apps \ webroot \ vebill \ share \ reports \ Test.xls'nicht zugreifen。 Dies kannmehrereGründehaben:
这些条件都不属实。
帮助非常指定!谢谢!
我忘了提及是旧安装使用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 ...