На работе потребовалось выгружать прайс в формате xls. Решил воспользоваться библиотекой PHPExcel.
//путь к библиотеке
require_once('PHPExcel.php');
$phpexcel = new PHPExcel();
$page = $phpexcel->setActiveSheetIndex(0);
// автоматическая ширина столбцов
$page->getColumnDimension('A')->setAutoSize(true);
$page->getColumnDimension('B')->setAutoSize(true);
$page->getColumnDimension('C')->setAutoSize(true);
$page->getColumnDimension('D')->setAutoSize(true);
$page->getColumnDimension('E')->setAutoSize(true);
//формируем содержимое
$page->setCellValueByColumnAndRow(0, 1, 'Номер');
$page->setCellValueByColumnAndRow(1, 1, 'Фирма');
$page->setCellValueByColumnAndRow(2, 1, 'Описание');
$page->setCellValueByColumnAndRow(3, 1, 'Цена');
$page->setCellValueByColumnAndRow(4, 1, 'Количество');
$j=2;
foreach($products as $product){
$page->setCellValueByColumnAndRow(0, $j, $product['articul']);
$page->setCellValueByColumnAndRow(1, $j, $product['brand']);
$page->setCellValueByColumnAndRow(2, $j, $product['name']);
$page->setCellValueByColumnAndRow(3, $j, $product['price']);
$page->setCellValueByColumnAndRow(4, $j, $product['count']);
$j++;
}
//отдаем файл пользователю
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="price.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5');
@$objWriter->save('php://output');
При вызове функции save часто выскакивает ошибка Warning: realpath() [function.realpath]: open_basedir restriction in….
Поставим @, чтобы ошибка не мешала нам. Криминал в общем.