'' <-- valeur cellule 'color' => '' <-- propriété optionelle "couleur" (ou autre) ) ) ) */ public function toArray($file){ $stream = file_get_contents($file); $stream = utf8_encode($stream); //met a plat les lignes comportant un saut de ligne car entre "" $stream = preg_replace_callback('/"(.*)"/Uis', function($match){ return str_replace(array("\n","\r"),'
',$match[1]); }, $stream); $finalArray = array(); $emptyLines = 0; foreach(explode(PHP_EOL,$stream) as $line){ //si + de 10 lignes vides on arrette de lire (evite les excels sans fin) if($this->emptyLine($line,true)) $emptyLines++; if($emptyLines>10) break; $finalLine = array(); foreach(explode(';',$line) as $cell) $finalLine[]= array('value'=>$cell); $finalArray[] = $finalLine; } return $finalArray; } //vérifie si une ligne est a vide ou non public function emptyLine($line,$raw = false){ if($raw) return str_replace(array(';',' ',"\t","\n","\r"),'',$line) == ''; $oneFilled = false; foreach($line as $i=>$cell){ if( $this->emptyCell($cell) ) continue; $oneFilled = true; break; } return !$oneFilled; } //vérifie si une cellule est a vide ou non public function emptyCell($cell){ return str_replace(array(';',' ',"\t","\n","\r"),'',$cell['value']) == ''; } //Déduction du type d'une celleule a partir de sa valeur public function cellType($headerCell,$valueCell){ $columnName = isset($headerCell['label']) ? $headerCell['label'] : $headerCell['value']; $value = $valueCell['value']; $deductedType = 'text'; if(strlen($value)>225) $deductedType = 'textarea'; if(is_int($value)) $deductedType = 'number'; if(is_float($value) || is_double($value)) $deductedType = 'decimal'; if( strtolower($value) =='oui' || strtolower($value) =='non' || strtolower($value) =='o' || strtolower($value) =='x' || strtolower($value) =='n' || stripos($columnName, 'VRAI/FAUX') !== false || stripos($columnName, 'OUI/NON') !== false || stripos($columnName, 'O/N') !== false ) $deductedType = 'boolean'; if(strpos($value,'€') !== false) $deductedType = 'price'; if(stripos($columnName, 'prix ')===0 || stripos($columnName, 'montant ')===0 || stripos($columnName, 'tarif ')===0 ) $deductedType = 'price'; if(stripos($columnName, 'date ')===0) $deductedType = 'date'; if(stripos($columnName, 'catégorie ')===0 || stripos($columnName, 'categorie ')===0 ) $deductedType = 'dictionary'; if(stripos($columnName, 'type ')===0 ) $deductedType = 'dictionary'; return $deductedType; } //Réglages spécifiques a ce modèle d'import public function settings(){ return array(); } } ?>