Ecriture de fichiers csv (excel) [ object ]

Contenu du snippet

Cette classe Permet d'ecrire simplement et rapidement des fichiers Excel!

Source / Exemple :


<?

/*

  • Ecriture de fichiers Csv (Excel)
  • Par MAMMANA Jean Charles
*
  • Cette class simple permet d'ecrire des fichiers Excel
  • au format point virgule.
  • J'ai ecris cette petite class en PHP4 pour quelle soit
  • compatible avec tous les serveur php (non pas uniquement
  • PHP5).
* *
  • -- Description des Membres --
*
  • makeCsv(String filename) est le constructeur de la class
  • il defini le nom du fichier qui sera créé.
*
  • addLine(String[] line, int numberLine)
  • ajoute une ligne ( une ligne est un tableau)
  • chaque element du tableau est un element de la ligne.
  • on donne le numero de la ligne que l'on souhaite
  • remplir.
*
  • addCol(String[] line, int numberCol)
  • Idem que pour addLine() mais remplis une colonne.
  • prends en 2em parametre le numero de la colonne à
  • remplir.
*
  • setValueAt(int x,int y,String v)
  • remplis une case aux coordonnées x,y
*
  • maxX() et maxY()
  • retourne la taille (en nombre de cellules)
  • de lignes et de colonnes du tableau.
*
  • createCsv()
  • Creation du fichier csv sur le serveur.
*
  • downloadCsv()
  • Creation du fichier csv en memoire pour telechargement!
* * *
  • -----------------------------
* *
  • /
class MakeCsv{ var $fileName; var $csv = array(); function MakeCsv($fileName){ $this->fileName = $fileName; } function addCol($array,$l){ $this->csv[$l-1] = $array; } function addLine($array,$c){ for($i=0;$i<count($array);$i++){ $this->csv[$i][$c-1] = $array[$i]; } } function setValueAt($x,$y,$v){ $this->csv[$x-1][$y-1] = $v; } function createCsv(){ $fp = @fopen($this->fileName,"w") or die('<br /><b>Fatal error</b>: Can\'t open <b>'.$this->fileName.'</b> in <b>'.__FILE__.'</b> on line <b>'.(__LINE__-1).'</b><br />'); for($y=0;$y<$this->maxY();$y++){ for($x=0;$x<$this->maxX();$x++){ if(!empty($this->csv[$x][$y])) fwrite($fp,$this->csv[$x][$y],strlen($this->csv[$x][$y])); fwrite($fp,';',1); } fwrite($fp,"\r\n",2); } fclose($fp); } function downloadCsv(){ header("Content-disposition: attachment; filename=\"$this->fileName\""); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: binary"); for($y=0;$y<$this->maxY();$y++){ for($x=0;$x<$this->maxX();$x++){ if(!empty($this->csv[$x][$y])) echo '"'.$this->csv[$x][$y].'"'; // virgule pour W2K ou point pour Xp selon la version de Excel echo ';'; } echo "\r\n"; } exit(); } function maxX(){ $max = 0; while(list($k,) = each($this->csv)){ if($k>$max) $max = $k; } reset($this->csv); return $max+1; } function maxY(){ $max = 0; while(list($k,) = each($this->csv)){ while(list($k2,) = each($this->csv[$k])){ if($k2>$max) $max = $k2; } reset($this->csv[$k]); } reset($this->csv); return $max+1; } } ?>

Conclusion :


j'ai redigé cette petite class car j'en avais marre de me tapper l'adaptation de fichiers de configurations en excel à la paluche...
elle n'est pas bien complete, mais ca simplicité permettra aux debutants d'aprehender la notion d'objets en PHP (meme si PHP5 permet la notion de portée)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.