PHPExcel spanish characters in .xls output

Topics: Developer Forum
Mar 3, 2015 at 7:46 PM
Edited Mar 3, 2015 at 7:50 PM
Hi!,

I've been testing this library and it works great, except for the final .xls that is not displaying correctly some Spanish Characters like "áéíóú" and long numbers (it turns into exponencial numbers).

i thought that this chars problem was solved adding this line:
"mysqli_set_charset($Link, 'utf8');//if not by default"
But it seems to not be working... any idea of whats going on?

If de entry is "áéíóú" it displays = áéíó
If the numbers are more than 20 chars it displays = 1,23123E+17

Thanks for reading!

Here is the code of index:
<?php
$host='localhost'; $user='m9000207_ficlog'; $pass='*******'; $DataBase='m9000207_ficlog';//define the correct values
// open the connexion to the databases server
$Link=@mysqli_connect($host,$user,$pass,$DataBase) or die('Can\'t connect !');
mysqli_set_charset($Link, 'utf8');//if not by default
//your request
$SQL='SELECT * FROM registros';
$rs=mysqli_query($Link, $SQL);//get the result (ressource)
/** Include PHPExcel */
require_once '../Classes/PHPExcel.php';//change if necessary

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
$F=$objPHPExcel->getActiveSheet();
$Line=1;
while($Trs=mysqli_fetch_assoc($rs)){//extract each record
    $F->setCellValue('A'.$Line, $Trs['user_name'])
        ->setCellValue('B'.$Line, $Trs['user_last'])
        ->setCellValue('C'.$Line, $Trs['pais'])
        ->setCellValue('D'.$Line, $Trs['tel'])
        ->setCellValue('E'.$Line, $Trs['user_email']);//write in the sheet
    ++$Line;
}
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="report.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
Coordinator
Mar 3, 2015 at 9:12 PM
What charset is used for your database table?
Mar 3, 2015 at 9:38 PM
MarkBaker wrote:
What charset is used for your database table?
Hi Mark,

Im using utf8_general_ci

Thanks!
Coordinator
Mar 3, 2015 at 10:46 PM
Edited Mar 3, 2015 at 10:54 PM
This is the type of problem I hate: unable to replicate in any way other than providing non-UTF-8 data to PHPExcel..... if data is UTF-8, there should be no issue.

Can you try issuing
mysqli_query($Link, "SET NAMES 'utf8mb4'");
before your SELECT query?