2011-04-10 3 views
1

Mon script d'exportation:Tableau HTML pour * problèmes d'encodage .xls

if($_POST){ 
    $file = 'FKDB_XLS'; 
    $filename = $file."_".date("Y-m-d_H-i",time()); 
    header("Content-type: application/vnd.ms-excel; charset=utf-8"); // dunno if the charset does anything for this application type.. 
    header("Content-Disposition: attachment; filename=$filename"); 
    echo stripslashes($_SESSION['item']); unset($_SESSION['item']); 
    exit; 
} 

Basiquement, il se juste HTML ($_SESSION['item'] comme <table>{rows}</table>) dans * .xls et permet Excel d'établir des tableaux de ces données, comme la plupart des tu sais, probablement. Le problème est, une fois ouvert dans Excel, tout est OK, sauf que ... toutes les valeurs sont incorrectement écrites, avec tous les Ä, ņŠet ainsi de suite au lieu de 'Â' ou ainsi, encore une fois.

Que dois-je faire pour éviter cela?

Merci d'avance!

Répondre

4

Si vous écrivez un balisage HTML pour l'importer dans Excel, vous devez vous assurer que vous définissez les balises META appropriées dans l'en-tête HTML. Spécifier charset dans le type de contenu n'aura absolument aucun effet. Si vous écrivez simplement une table, enveloppez-la dans HTML/HEAD/BODY, etc afin que vous puissiez définir les balises META HEAD.

Je ne comprends toujours pas pourquoi les gens écrivent HTML et donnent au fichier une extension xls quand il est si facile de créer un vrai fichier Excel!

+1

partager l'esprit d'info sur « facile de créer un véritable fichier Excel »? – jolt

+0

@Tom - Ce que je veux dire, c'est qu'il y a tout un tas de bibliothèques PHP pour créer un véritable fichier .xls BIFF ou un fichier .xlsx Office Open XML sans écrire simplement un fichier csv ou html et lui donner une extension de .xls. En plus de PHPExcel (http://www.phpexcel.net), qui est ma propre bibliothèque, il y a d'autres options listées dans la réponse à cette question SO http://stackoverflow.com/questions/3930975/alternative-for-php -excel –

+0

Merci, j'utilise pour créer des fichiers xls en utilisant \ t et \ n, mais j'ai eu beaucoup de problèmes avec l'encodage, avec les tables est beaucoup plus facile et fonctionne beaucoup mieux. Merci encore Mark. –

3

Ajoutez ceci à votre table HTML, donc Excel lire à la volée:

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 
+1

Il devrait probablement y avoir des guillemets autour de "Content-Type". –