PHPExcel Cells With utf8

1

I have the problem that I do not recognize the special characters, I tried the following but it does not work for me:

Putting it in UTF8 =

 $titulosColumnas = array('Código', 'Inclusión de la Noticia DD/MM/AAAA', 'Fecha de la Noticia  DD/MM/AAAA', 'Nombre del Medio', 'Sección', 'Página Web', 
                                'Título de la Noticia', 'Fuente de Información', 'Resumen Noticia', 'Tipo de Delito', 'Estado Procesal', 'Delitos Relacionados',
                                'País', 'Departamento', 'Ciudad', 'Tipo Persona', 'Primer Nombre', 'Segúndo Nombre', 'Primer Apellido ó Razón Social', 'Segundo Apellido', 'Alias', 'Edad', 'Caracteristicas', 'Número Documento', 'Tipo Documento', 'Lugar Expedición', 'Dirección', 'Noticia Completa', 'Imagen');


            // Se agregan los titulos del reporte
        $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1',   utf8_encode($titulosCol

umnas[0]))
                    ->setCellValue('B1',   utf8_encode($titulosColumnas[1]))
                    ->setCellValue('C2',   utf8_encode($titulosColumnas[2]))
                    ->setCellValue('D1',   utf8_encode($titulosColumnas[3]))
                    ->setCellValue('E1',   utf8_encode($titulosColumnas[4]))
                    ->setCellValue('F1',   utf8_encode($titulosColumnas[5]))
                    ->setCellValue('G1',   utf8_encode($titulosColumnas[6]))
                    ->setCellValue('H1',   utf8_encode($titulosColumnas[7]))
                    ->setCellValue('I1',   utf8_encode($titulosColumnas[8]))
                    ->setCellValue('J1',   utf8_encode($titulosColumnas[9]))
                    ->setCellValue('K1',   utf8_encode($titulosColumnas[10]))
                    ->setCellValue('L1',   utf8_encode($titulosColumnas[11]))
                    ->setCellValue('M1',   utf8_encode($titulosColumnas[12]))
                    ->setCellValue('N1',   utf8_encode($titulosColumnas[13]))
                    ->setCellValue('O1',   utf8_encode($titulosColumnas[14]))
                    ->setCellValue('P1',   utf8_encode($titulosColumnas[15]))
                    ->setCellValue('Q1',   utf8_encode($titulosColumnas[16]))
                    ->setCellValue('R1',   utf8_encode($titulosColumnas[17]))
                    ->setCellValue('S1',   utf8_encode($titulosColumnas[18]))
                    ->setCellValue('T1',   utf8_encode($titulosColumnas[19]))
                    ->setCellValue('U1',   utf8_encode($titulosColumnas[20]))
                    ->setCellValue('V1',   utf8_encode($titulosColumnas[21]))
                    ->setCellValue('W1',   utf8_encode($titulosColumnas[22]))
                    ->setCellValue('X1',   utf8_encode($titulosColumnas[23]))
                    ->setCellValue('Y1',   utf8_encode($titulosColumnas[24]))
                    ->setCellValue('Z1',   utf8_encode($titulosColumnas[25]))
                    ->setCellValue('AA1',  utf8_encode($titulosColumnas[26]))
                    ->setCellValue('AB1',  utf8_encode($titulosColumnas[27]))
                    ->setCellValue('AC1',  utf8_encode($titulosColumnas[28]));

adding utf-8 to headers

  header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8');
        header('Content-Disposition: attachment;filename="Resumen_20170223.xlsx"; charset=utf-8' );
        header('Cache-Control: max-age=0');

But nothing works, does anyone know how to solve it?

    
asked by Andress Blend 23.02.2017 в 16:53
source

2 answers

2

Try to put at the beginning header("Content-Type: text/html;charset=utf-8");

Then your code but remove all utf8_encode()

And the final headers:

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="nombreFichero.xlsx"');
header('Cache-Control: max-age=0');

The problem seems to be to translate the characters to utf8 when your document is already utf8.

    
answered by 23.02.2017 / 18:42
source
0

If you use sublime text, encode your php file in utf8 in the following way:

File > Save With Encoding > UTF-8

Remove utf8_encode function and correct errors with tildes and ñ

You could also optimize your code as follows:

$titulosColumnas = array(
    'Código', 
    'Inclusión de la Noticia DD/MM/AAAA', 
    'Fecha de la Noticia  DD/MM/AAAA', 
    ...
);

$fila = 1;
$columna = 0;

foreach($titulosColumnas as $value) {
    $objPHPExcel->getActiveSheet()
                ->setCellValueByColumnAndRow($columna, $fila, $value);
    $columna++;//Incrementas el valor de la columna
}

And you export it as mentioned nachfren

    
answered by 23.02.2017 в 19:39