使用phpexcel,我想从Internet阅读一个文件。Phpexcel库似乎仅适用于仅打开本地文件,而不是URL。这是我尝试的:
<?php
require __DIR__ . '/vendor/autoload.php';
$string = file_get_contents('http://opendatakit.org/wp-content/uploads/static/sample.xls');
$stream = fopen('php://memory','r+');
fwrite($stream, $string);
rewind($stream);
$objPHPExcel = PHPExcel_IOFactory::load('php://memory');
这是我收到的错误:
致命错误:未被发现的例外" phpexcel_reader_exception" 消息'无法打开php://记忆以进行阅读!文件没有 存在。'
我还尝试直接传递URL(PHPExcel_IOFactory::load('http://opendatakit.org/wp-content/uploads/static/sample.xls')
)。类似的错误。
致命错误:未被发现的例外" phpexcel_reader_exception" 消息无法打开 http://opendatakit.org/wp-content/uploads/static/sample.xls for 阅读!文件不存在。'
编辑:还尝试了一个临时文件
$string = file_get_contents('http://opendatakit.org/wp-content/uploads/static/sample.xls');
$temp = tmpfile();
fwrite($temp, $string);
fseek($temp, 0);
$objPHPExcel = PHPExcel_IOFactory::load($temp);
这次有不同的错误:
警告:pathinfo()期望参数1为字符串,资源给定 在/project/vendor/phpoffice/phpexcel/classes/phpexcel/iofactory.php中 在第224行
上警告:file_exists()期望参数1是有效的路径, 给出的资源 /project/vendor/phpoffice/phpexcel/classes/phpexcel/reader/excel2007.php 在第81行
上致命错误:未被发现的例外" phpexcel_reader_exception" 消息'无法打开资源ID#10用于阅读!文件没有 存在。'
您的想法很好。但是phpexcel需要一个filepath才能正确工作。您可以尝试此样本:
$string = file_get_contents('http://opendatakit.org/wp-content/uploads/static/sample.xls');
$tmp = tempnam(sys_get_temp_dir(), "FOO");
file_put_contents($tmp, $string);
$objPHPExcel = PHPExcel_IOFactory::load($tmp);
//Perform all your operations
// ...
unlink($tmp);
请参阅tempnam()