4 votes

Exportation des données php dans Excel en type de données texte

Je veux exporter ma page web php vers Excel.

Pour ce faire, j'ai trouvé le code suivant qui fonctionne mais qui pose un problème.

Les valeurs dans une colonne commencent par quelque chose comme '00003421' en php mais lorsqu'elles sont exportées dans Excel, elles ne montrent que '3421' dans la cellule. Il ignore les zéros. De plus, je veux qu'elles soient dans le type de données texte.

Comment puis-je exporter les données au format texte brut tel quel (y compris les zéros)?

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=export.xls");
header("Content-Transfer-Encoding: BINARY");

C'est des données tabulaires avec 4 colonnes et environ 20 000 lignes.

8voto

Periback Points 1829

Une solution possible consiste à créer une nouvelle méthode Binder de valeur pour remplacer la méthode PHPExcel. (PHPExcel essaie de deviner le type de données que nous insérons dans les cellules. Ainsi, suivant les conseils de markBaker, j'ai créé cette classe pour remplacer cette méthode:

class PHPExcel_Cell_MyValueBinder extends PHPExcel_Cell_DefaultValueBinder
implements PHPExcel_Cell_IValueBinder 
{ 
    public function bindValue(PHPExcel_Cell $cell, $value = null) { 
        // sanitize UTF-8 strings 
        if (is_string($value)) { 
            $value = PHPExcel_Shared_String::SanitizeUTF8($value); 
        } 

        // if it is a string and starts with 0, the value will be converted into string 
        if (is_string($value) && $value[0] == '0') { 
            $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); 
            return true; 
        } 
        return parent::bindValue($cell, $value); 
    } 
} 

ceci était un conseil que markbaker m'a recommandé dans cette question.

2voto

xdazz Points 85907

Le 0 est simplement caché si le type de données de la cellule n'est pas texte, sélectionnez toutes les cellules dans Excel et définissez le type de données sur texte.

Ou essayez d'ajouter une apostrophe à chaque valeur en php, '00003421' à '\'00003421', Excel saura que c'est le type de données texte si le nombre commence par une apostrophe.

2voto

Siva Points 1357

J'ai résolu cela de la manière suivante.

Vous pouvez essayer ceci

=\"$number\"";
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X