Obtiene el archivo xls dañado al descargarlo usando PHPExcel

En mi proyecto actual, utilicé PHPExcel 1.7.8 para exportar datos a Excel. Según lo sugerido, lo configuré exitosamente en mi proyecto y logré generar el archivo xls y lo almacené, pero cuando traté de descargar el archivo xls, corrí el archivo xls corrupto sin recibir ningún mensaje de error. Tengo el siguiente código para el mismo.

/** Error reporting */ if (PHP_SAPI == 'cli') die('This example should only be run from a Web Browser'); /** Include PHPExcel */ require_once '../Classes/PHPExcel.php'; // Create new PHPExcel object $objPHPExcel = new PHPExcel(); // Set document properties $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("PHPExcel Test Document") ->setSubject("PHPExcel Test Document") ->setDescription("Test document for PHPExcel, generated using PHP classes.") ->setKeywords("office PHPExcel php") ->setCategory("Test result file"); // Add some data $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'Hello') ->setCellValue('B1', 'world!') ->setCellValue('C1', 'Hello') ->setCellValue('D1', 'world!'); // Miscellaneous glyphs, UTF-8 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A2', 'Miscellaneous glyphs') ->setCellValue('B2', 'This is test text by me'); // Rename worksheet $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // Redirect output to a client's web browser (Excel5) header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"filename.xls\""); header("Cache-Control: max-age=0"); // Save Excel 2007 file $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save(str_replace('.php', '.xls', __FILE__)); $objWriter->save("php://output"); exit; 

Gracias.

¿Puedes probar esto? Justo antes de tu

 header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"filename.xls\""); header("Cache-Control: max-age=0"); 

poner ob_end_clean(); .

Puede haber algo mal en su buffer de salida.