通过COM/OLE的PHP 5.5 Excel对象无法加载文件
情况:我目前正在将一个内部行业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并不是处理工作表的首选方式,但曾经决定这样做是因为通过COM/OLE的PHP 5.5 Excel对象无法加载文件,php,excel,com,ole,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不可用,或者至少功能不够强大 一次使用报告的人不得超过一人 问题详情:PH
- PHPExcel不可用,或者至少功能不够强大
- 一次使用报告的人不得超过一人
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中的文件可以打开。将文件权限更改为“everyone”无效
- 在路径中使用/和\并尝试用“.”环绕路径
- 这是我的名字
- 这是一个非常简单的程序
- 在Arbeitsmappe的名字中,他是一个独立的名字,是一个独立的名字
try {
$excel->Workbooks->Open($fn);
} catch (Exception $e) {
$excel->Quit();
$excel = null;
// ... Errormessage ...;
return;
}
18:43:229966615EXCEL.EXE
5916
CreateFileMapping
D:\apps\webroot\vebill\share\reports\Test.xls
仅使用读卡器锁定文件
SyncType:SyncTypeCreateSection,页面保护: 但稍后在日志中,Excel会多次访问该文件,并且不会出现任何错误 更新1:我将Apache服务的登录凭据更改为我正在使用的管理员用户-错误保持不变:Led Zeppelin alredy Knowed;-) 更新2:发现此问题,我的问题是重复的,不幸的是,此问题也未解决。将立即尝试移动到PHPExcel
说明:Microsoft Excel无法访问文件“d:\apps\webroot\vebill\share\reports\test.xls”。这可能有几个原因:文档的名称或路径不存在。该文档被其他程序使用。要保存的工作簿的名称与正在保存的另一个文档的名称相同只读。
是否检查了所有这些情况?路径正确(带双斜杠d:\\apps\\…),文档已打开..?用于了解发生了什么。是的,这是我收到的错误消息的准确翻译,如上所述,这些情况都不是真的。此外,我尝试了/和\\。该应用程序在旧环境中使用正向斜杠。迁移到PHPExcel比预期的要容易得多。只缺少一个功能,可以解决它有一个解决办法。。。