Foros del Web » Programando para Internet » PHP »

Duda PHPExcel...

Estas en el tema de Duda PHPExcel... en el foro de PHP en Foros del Web. Hola, buenos días Tengo un problema al momento de exportar archivos con PHPExcel. De manera local, en mi PC con XAMPP al momento que exporto ...
  #1 (permalink)  
Antiguo 09/06/2017, 09:21
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Duda PHPExcel...

Hola, buenos días

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');
        }
    } 
Como les comento, de manera local funciona perfecto, pero cuando lo bajo el sitio que hice, ya alojado en el servidor, no funciona marcando el error antes citado.

¿Saben cuál podría ser el error? ¿Alguna idea?

Saludos!

Etiquetas: fecha, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.