rare symbols appear when using phpexcel

1

Good by using phpexcel does not download the document, only rare symbols appear, I would greatly appreciate your help. Thanks in advance.

$conexion = new mysqli('','','','');
if (mysqli_connect_errno()) {
    printf("La conexión con el servidor de base de datos falló: %s\n", mysqli_connect_error());
    exit();
}      

$fecha1=$_GET['dateIni'];
$fecha2=$_GET['dateFin'];
$est=$_GET['est'];
$col=$_GET['col'];

if($fecha2!='' and $fecha1!='' and $est!='todo' and $col!='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE fecha>='$fecha1' AND fecha<='$fecha2' AND finalizado='$est' AND comercial='$col' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAprimero";
    $n = "valor1";
}elseif($fecha2!='' and $fecha1!='' and $est=='todo' and $col=='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE fecha>='$fecha1' AND fecha<='$fecha2' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAsegundo";
    $n = "valor2";
}elseif($fecha2=='' and $fecha1=='' and $est!='todo' and $col=='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE finalizado='$est' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAtercero";
    $n = "valor3";
}elseif($fecha1=='' and $fecha2=='' and $est=='todo' and $col!='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE comercial='$col' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAcuarto";
    $n = "valor4";
}elseif($fecha1!='' and $fecha2!='' and $est!='todo' and $col=='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE fecha>='$fecha1' AND fecha<='$fecha2' AND finalizado='$est' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAquitno";
    $n = "valor5";
}elseif($fecha1=='' and $fecha2=='' and $est!='todo' and $col!='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE comercial='$col' AND finalizado='$est' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAsexto";
    $n = "valor6";
}elseif($fecha1!='' and $fecha2!='' and $est=='todo' and $col!='nada'){
    $consulta = "SELECT * FROM contratoscolaborador WHERE comercial='$col' AND fecha>='$fecha1' AND fecha<='$fecha2' ORDER BY fecha DESC";
    $misContratos = $conexion->query($consulta);
    ECHO "HOLAultimo";
    $n = "valor7";
}
echo $n;

if($misContratos->num_rows > 0 ){

    if (PHP_SAPI == 'cli')
        die('Este archivo solo se puede ver desde un navegador web');

    /** Se agrega la libreria PHPExcel */
    require_once 'lib/PHPExcel/PHPExcel.php';

    // Se crea el objeto PHPExcel
    $objPHPExcel = new PHPExcel();

    // Se asignan las propiedades del libro
    $objPHPExcel->getProperties()->setCreator("") //Autor
                         ->setLastModifiedBy("") //Ultimo usuario que lo modificó
                         ->setTitle("Datos del Contrato")
                         ->setSubject("Cliente")
                         ->setDescription("Excel con los datos del contrato del cliente seleccionado")
                         ->setKeywords("reporte cliente contrato")
                         ->setCategory("Reporte excel");

    $tituloReporte = "Datos del cliente";
    $titulosColumnas = array('COLABORADOR','TELEFONO COLABORADOR','COMERCIAL','NOMBRE','APELLIDOS','DNI','CODIGO POSTAL','DIRECCION','FECHA NACIMIENTO','PROVINCIA','POBLACION','TELEFONO CONTACTO','EMAIL','TIPO CONTRATO','TELEFONO FIJO','OPERADOR ACTUAL','OFERTA','LINEA 1 NUMERO','LINEA 2 NUMERO','LINEA 3 NUMERO','LINEA 4 NUMERO','LINEA 5 NUMERO');

    // Se agregan los titulos del reporte
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1',$tituloReporte)
                ->setCellValue('A3',  $titulosColumnas[0])
                ->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])
                ->setCellValue('I3',  $titulosColumnas[8])
                ->setCellValue('J3',  $titulosColumnas[9])
                ->setCellValue('K3',  $titulosColumnas[10])
                ->setCellValue('L3',  $titulosColumnas[11])
                ->setCellValue('M3',  $titulosColumnas[12])
                ->setCellValue('N3',  $titulosColumnas[13])
                ->setCellValue('O3',  $titulosColumnas[14])
                ->setCellValue('P3',  $titulosColumnas[15])
                ->setCellValue('Q3',  $titulosColumnas[16])
                ->setCellValue('R3',  $titulosColumnas[17])
                ->setCellValue('S3',  $titulosColumnas[18])
                ->setCellValue('T3',  $titulosColumnas[19])
                ->setCellValue('U3',  $titulosColumnas[20])
                ->setCellValue('V3',  $titulosColumnas[21]);

    //Se agregan los datos de los alumnos
    $i = 4;
    while ($fila = $misContratos->fetch_array()) {

        $nombre = $fila['nombre'].'_'.$fila['apellidos'];

        $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A'.$i,  $fila['colaborador'])
                ->setCellValue('B'.$i,  $fila['telefonoColaborador'])
                ->setCellValue('C'.$i,  $fila['comercial'])
                ->setCellValue('D'.$i,  $fila['nombre'])
                ->setCellValue('E'.$i,  $fila['apellidos'])
                ->setCellValue('F'.$i,  $fila['dni'])
                ->setCellValue('G'.$i,  $fila['cp'])
                ->setCellValue('H'.$i,  $fila['direccion'])
                ->setCellValue('I'.$i,  $fila['fechaNacimiento'])
                ->setCellValue('J'.$i,  $fila['provincia'])
                ->setCellValue('K'.$i,  $fila['poblacion'])
                ->setCellValue('L'.$i,  $fila['telefonoContacto'])
                ->setCellValue('M'.$i,  $fila['email'])
                ->setCellValue('N'.$i,  $fila['tipoContrato'])
                ->setCellValue('O'.$i,  $fila['telefonoFijo'])
                ->setCellValue('P'.$i,  $fila['operadorActual'])
                ->setCellValue('Q'.$i,  $fila['oferta'])
                ->setCellValue('R'.$i,  $fila['linea1numero'])
                ->setCellValue('S'.$i,  $fila['linea2numero'])
                ->setCellValue('T'.$i,  $fila['linea3numero'])
                ->setCellValue('U'.$i,  $fila['linea4numero'])
                ->setCellValue('V'.$i,  $fila['linea5numero']);
            $i++;
    }
    // Se asigna el nombre a la hoja
    $objPHPExcel->getActiveSheet()->setTitle('Datos Cliente');

    // 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,83);

    // Se manda el archivo al navegador web, con el nombre que se indica (Excel2007)
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="excel.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');
}

The connection does it correctly, the if of the queries enters correctly but when executing it it fills the screen with some rare symbols and does not download the document

    
asked by tripossi 06.07.2016 в 12:02
source

1 answer

1

I guess the weird characters you're referring to are the accents and ñ

these are solved by applying utf8_encode ()

example

  ->setCellValue('A1', utf8_encode($tituloReporte))

If it does not work, it's because of the encoding in which you have the database.

    
answered by 07.07.2016 в 03:28