No se me había dado nunca el caso de tener que imprimir un excel desde PHP, hasta hoy.
Me he bajado PHPExcel, me sorprende que cree archivos para excel 2007, quizás me esté bajando una versión antigua, pero no he encontrado otra versión.
El problema es que al crear el excel y abrirlo, me aparece como archivo dañado y no me muestra nada, le he dado vueltas al código y he probado varias cosas, pero se me escapa algo.
Aquí va mi código:
----------------------------------------------------------------------------------
Código :
$consulta = "SELECT * FROM empresa WHERE id_empresa = 2"; $resultado = mysql_query( $consulta ); $fila = mysql_fetch_array( $resultado ); require_once("excel/Classes/PHPExcel.php"); require_once("excel/Classes/PHPExcel/Writer/Excel2007.php"); $objPHPExcel = new PHPExcel(); //algunos datos sobre autoría $objPHPExcel->getProperties()->setCreator("autor"); $objPHPExcel->getProperties()->setLastModifiedBy("autor"); $objPHPExcel->getProperties()->setTitle("titulo del Excel"); $objPHPExcel->getProperties()->setSubject("Asunto"); $objPHPExcel->getProperties()->setDescription("Descripcion"); //Trabajamos con la hoja activa principal $objPHPExcel->setActiveSheetIndex(0); //iteramos para los resultados, aquí debería ir un array, pero estoy probando con solo una id, y ni eso. $objPHPExcel->getActiveSheet()->SetCellValue("B1", $fila['nombre_marca']); $objPHPExcel->getActiveSheet()->SetCellValue("C1", $fila['cif']); $objPHPExcel->getActiveSheet()->setCellValue("D1", $fila['telefono']); $objPHPExcel->getActiveSheet()->setCellValue("E1", $fila['telefono2_fax']); $objPHPExcel->getActiveSheet()->setCellValue("F1", $fila['e_mail']); $objPHPExcel->getActiveSheet()->setCellValue("G1", $fila['direcciones']); $objPHPExcel->getActiveSheet()->setCellValue("H1", $fila['contacto']); $objPHPExcel->getActiveSheet()->setCellValue("I1", $fila['comentario']); //Titulo del libro y seguridad $objPHPExcel->getActiveSheet()->setTitle('Reporte'); $objPHPExcel->getSecurity()->setLockWindows(true); $objPHPExcel->getSecurity()->setLockStructure(true); // Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="empresa.xlsx"'); header('Cache-Control: max-age=0'); //Creamos el Archivo .xlsx $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); ---------------------------------------------------------------------------------------- Y el error es que al abrir el excel, me sale una ventana de que "Excel no puede abrir el archivo "tal", porque el formato o la extensión de este no son válidos"