В PHP существует несколько библиотек облегчающих генерацию отчетов в формат файла .xlsx (нового формата MS Excel начиная с версии 2007):
Библиотека очень хорошо документирована, на сайте достаточное количество разнообразные примеров. Некоторые возможности библиотеки PHPExcel:
<?php error_reporting(E_ALL); include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; // Create new PHPExcel object echo date('H:i:s') . " Create new PHPExcel object\n"; $objPHPExcel = new PHPExcel(); // Установить свойства документа. Видны в Office 2010 (в LibreOffice эти свойства не видны) $objPHPExcel->getProperties()->setCreator(""); // Автор $objPHPExcel->getProperties()->setLastModifiedBy(""); $objPHPExcel->getProperties()->setTitle("LCR"); // Название $objPHPExcel->getProperties()->setSubject("Office 2007"); // Тема $objPHPExcel->getProperties()->setDescription("LCR"); // Примечания // Add some data echo date('H:i:s') . " Add some data\n"; $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello'); $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!'); $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello'); $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!'); // Rename sheet echo date('H:i:s') . " Rename sheet\n"; $objPHPExcel->getActiveSheet()->setTitle('LCR'); // Create a new worksheet, after the default sheet echo date('H:i:s') . " Create new Worksheet object\n"; $objPHPExcel->createSheet(); $objPHPExcel->setActiveSheetIndex(1); $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Code'); $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'Destination!'); // Rename sheet echo date('H:i:s') . " Rename sheet\n"; $objPHPExcel->getActiveSheet()->setTitle('Code'); // Save Excel 2007 file $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); //$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); $objWriter->save('cdr.xlsx'); $file = "cdr.xlsx"; if (file_exists($file)) { // redirect output to client browser header('Content-Description: File Transfer'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); unlink($file); // удаляем файл } ?>