此代码正常工作,直到它到达打开的工作簿行,然后失败。
<?PHP
$file = "C:\\xampp\\htdocs\\php\\test.xls";
openWorkbook($file);
function openWorkbook($file)
{
$excel = new COM("Excel.Application") or die ("ERROR: Unable to instantaniate COM!\r\n");
echo "Application name: {$excel->Application->value}\r\n";
echo "Loaded version: {$excel->Application->version}\r\n";
// FAILS ON THIS LINE!
$Workbook = $excel->Workbooks->Open($file) or die("ERROR: Unable to open " . $file . "!\r\n");
}
有没有人对为什么会这样做有任何建议?我看了很多其他帖子,但似乎没有人有这个具体问题。
答案 0 :(得分:0)
我将假设您需要使用COM而不是像PHPExcel这样的第三方库。如果没有具体原因,请考虑切换到这些经过试验,测试和支持的替代方案。
您的代码似乎是正确的,我只能想象您有某种权限问题。
通过COM从PHP中的MSO应用程序中提取合理的错误消息可能非常困难,所以您可以尝试以下几种方法:
.xls
)是否与文件内的数据匹配 - 例如,确保您没有包含错误文件扩展名的CSV文件。 Excel(即使通过COM访问)应该能够处理这个问题,但如果你在Excel应用程序中打开文件,它会发出警告。这极不可能修复这个特定的问题(文件打开代码看起来是相同的)但它可能会帮助你一点:前段时间我写了一个非常小的Excel包装程序库,通过COM访问,可以找到here。它的功能非常有限,但可以很容易地添加更多方法;它最常带给派对的是一个稍微清洁的API和稍微好一点的错误处理。