Я хотел бы использовать php для получения файла xls, размещенного на сайте. Как только я получу файл, я хочу преобразовать его в json / csv / tsv и сохранить его на своем веб-сервере.
Я нашел библиотеку PHPExcel, но все примеры, которые я видел, имеют отношение к локальным файлам.
<?php
require_once('Classes/PHPExcel.php');
$url = "http://www.website-example.com/dir/file.xls";
//Usage:
convertXLStoCSV($url,'output.csv');
function convertXLStoCSV($infile,$outfile)
{
$fileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($fileType);
echo $infile;
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($infile);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save($outfile);
echo $outfile;
}
?>
Скорее всего, вам понадобится загрузить копию файла XLS на ваш сервер, а затем использовать PHP для его анализа.
Используйте cURL (http://php.net/manual/en/book.curl.php) чтобы получить содержимое файла XLS:
<?php
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "somedomain.com/some-xls-file.xls");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$xlsData= curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
?>
Тогда либо труба $xlsData
напрямую в PHPExcel или сохраните файл XLS на свой сервер с помощью fwrite (http://php.net/manual/en/function.fwrite.php):
<?php
$file = fopen($_SERVER['DOCUMENT_ROOT']. "/your-new-xls-file.xls", "w");
echo fwrite($file, $xlsData);
fclose($file);
?>
Других решений пока нет …