2016-07-12 6 views
0

Ich versuche mysql Daten in Excel mit UTF-8-Codierung zu speichern. Aber alle Daten speichern in einer Zelle. aber ich habe ein Problem mit der Excel-Datei. Es zeigt die UTF-8-Zeichen hässlich.export mysql utf 8 Daten in Excel

Excel-Datei: this is output

DB CONNECTION:

<?php 
$conn=mysql_connect("localhost","root","") or die("Could not connect"); 
mysql_select_db("urulikanchan",$conn) or die("could not connect database"); 
mysql_set_charset('utf8',$conn); 
mysql_query("SET NAMES utf8"); 
?> 

Excel-Datei DOWNLOAD:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>New Post</title> 


</head> 
<body> 
<?php 


include 'db.php'; 

$SQL = "SELECT * from member_detail"; 
$header = ''; 
$result =''; 
$exportData = mysql_query ($SQL) or die ("Sql error : " . mysql_error()); 

$fields = mysql_num_fields ($exportData); 

for ($i = 0; $i < $fields; $i++) 
{ 
    $header .= mysql_field_name($exportData , $i) . "\t"; 
} 

while($row = mysql_fetch_row($exportData)) 
{ 
    $line = ''; 
    foreach($row as $value) 
    {            
     if ((!isset($value)) || ($value == "")) 
     { 
      $value = "\t"; 
     } 
     else 
     { 
      $value = str_replace('"' , '""' , $value); 
      $value = '"' . $value . '"' . "\t"; 
     } 
     $line .= $value; 
    } 
    $result .= trim($line) . "\n"; 
} 
$result = str_replace("\r" , "" , $result); 

if ($result == "") 
{ 
    $result = "\nNo Record(s) Found!\n";       
} 

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=export.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

header('Content-Encoding: UTF-8'); 

echo "\xEF\xBB\xBF"; 


print "$header\n$result"; 

?> 
    </body></html> 
+0

Wahrscheinlich wissen Sie, aber: Muss es Excel-Datei werden? Sie können versuchen, auf CSV-Datei zu speichern, die in der Lage ist, in Excel oder Open Office zu öffnen, können Sie einchecken http://www.w3schools.com/php/func_filesystem_fputcsv.asp oder http://code.stephenmorley.org/ php/creating-downloadable-csv-files/ – uelordi

+0

Dies ist keine native-Format-Excel-Datei, die Sie generieren, nur eine CSV-Datei mit einem Tab-Trennzeichen (und eine schlechte homebrew csv; zumindest versuchen mit PHP gebaut -in [fputcsv()] (http://www.php.net/manual/en/function.fputcsv.php) Funktion, die einige der möglichen Probleme beheben wird –

Antwort

0

Wenn Sie eine echte generieren Excel-Datei und nicht nur CSV beachten Sie bitte mit einige PHP-Bibliothek wie PHPExcel.

Hier ist ein einfaches Codebeispiel, das UTF-Zeichen verwendet:

<?php 
require_once dirname(__FILE__) . '/PHPExcel/Classes/PHPExcel.php'; 

$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); 
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Test UTF8 Characters:'); 
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'éçà'); 
$objPHPExcel->getActiveSheet()->setTitle('Export'); 
$objPHPExcel->setActiveSheetIndex(0); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 


header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=export.xlsx"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
header('Content-Encoding: UTF-8'); 

$objWriter->save('php://output');