Tengo un problema al momento de exportar archivos con PHPExcel. De manera local, en mi PC con XAMPP al momento que exporto un archivo a Excel funciona muy bien, sin embargo, cuando subí el proyecto a un servidor (proveedor de hosting) me marca el siguiente error:
"Excel no puede abrir el archivo 'ReporteClientes.xlsx' porque el formato o la extensión de este no son válidos. Compruebe que el archivo no se ha dañado y que la extensión del mismo coincide con el formato del archivo."
Este es mi archivo para generarlo:
Código PHP:
require("database/config-db.php");
/* --------------------------------------------------------------------------------------------------------
Query: Listado de clientes.
Descripción: Muestra un listado de todos los clientes registrados en el sistema.
Creación: Marzo 7, 2017
---------------------------------------------------------------------------------------------------------*/
if(isset($_POST['getReport'])){
$sqlSelectClients = mysqli_query($conn, "Select * from cs_clients");
$registros = mysqli_num_rows($sqlSelectClients);
if ($registros > 0) {
date_default_timezone_set('America/Mexico_City');
if (PHP_SAPI == 'cli')
die('Este archivo solo se puede ver desde un navegador web');
/** Se agrega la libreria PHPExcel */
require_once ("scripts/PHPExcel/Classes/PHPExcel.php");
// Se crea el objeto PHPExcel
$objPHPExcel = new PHPExcel();
// Se asignan las propiedades del libro
$objPHPExcel->getProperties()->setCreator("Codedrinks") // Nombre del autor
->setLastModifiedBy("Codedrinks") //Ultimo usuario que lo modificó
->setTitle("Reporte de Clientes") // Titulo
->setSubject("Reporte de Clientes") //Asunto
->setDescription("Reporte de Clientes") //Descripción
->setKeywords("reporte clientes") //Etiquetas
->setCategory("Reporte excel"); //Categorias
$tituloReporte = "Reporte de Clientes";
$titulosColumnas = array('CLIENTE', 'RFC', 'EMPRESA', 'CONTACTO', 'CORREO', 'TELÉFONO', 'DIRECTORIO', 'FECHA');
// Se combinan las celdas A1 hasta D1, para colocar ahí el titulo del reporte
$objPHPExcel->setActiveSheetIndex(0)
->mergeCells('A1:D1');
// Se agregan los titulos del reporte
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1',$tituloReporte) // Titulo del reporte
->setCellValue('A3', $titulosColumnas[0]) //Titulo de las columnas
->setCellValue('B3', $titulosColumnas[1])
->setCellValue('C3', $titulosColumnas[2])
->setCellValue('D3', $titulosColumnas[3])
->setCellValue('E3', $titulosColumnas[4])
->setCellValue('F3', $titulosColumnas[5])
->setCellValue('G3', $titulosColumnas[6])
->setCellValue('H3', $titulosColumnas[7]);
//Se agregan los datos del cliente
$i = 4; //Numero de fila donde se va a comenzar a rellenar
while ($fila = $sqlSelectClients->fetch_array()) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$i, $fila['cli_cliente'])
->setCellValue('B'.$i, $fila['cli_rfc'])
->setCellValue('C'.$i, $fila['cli_empresa'])
->setCellValue('D'.$i, $fila['cli_contacto'])
->setCellValue('E'.$i, $fila['cli_correo'])
->setCellValue('F'.$i, $fila['cli_telefono'])
->setCellValue('G'.$i, $fila['cli_directorio'])
->setCellValue('H'.$i, $fila['cli_fecha']);
$i++;
}
// Se asigna el nombre a la hoja
$objPHPExcel->getActiveSheet()->setTitle('Clientes');
// Se activa la hoja para que sea la que se muestre cuando el archivo se abre
$objPHPExcel->setActiveSheetIndex(0);
// Inmovilizar paneles
//$objPHPExcel->getActiveSheet(0)->freezePane('A4');
$objPHPExcel->getActiveSheet(0)->freezePaneByColumnAndRow(0,4);
// Se manda el archivo al navegador web, con el nombre que se indica, en formato 2007
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="ReporteClientes.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
}
else{
print_r('No hay resultados para mostrar');
}
}
¿Saben cuál podría ser el error? ¿Alguna idea?
Saludos!