src/ImportAbstract.php
public function build()
    {
        $tbError = [];
        
        $this->currentRow = 1;
        
        /*
         * Supprime la premiere ligne
         */
        if ($this->isIgnoreFirstLine()) {
            $this->currentRow++;
            array_shift($this->rows);
        }
        
        /*
         * Si aucun champs n'a été défini
         */
        if (is_null($this->getFields())) {
            $this->currentRow++;
            
            // On prend la première ligne comme nom de colonnes ?
            if ($this->isheaderLikeFirstLine()) {
                if (is_null($this->rows) || count($this->rows) == 0) {
                    throw new Exception("Pas de données à traiter", self::IMPORT_NODATA);
                }
                $firstLine = array_shift($this->rows);
                $this->setFields($firstLine);
            } else {
                /*
                 * Sinon on génère automatiquement les noms de colonnes
                 */
                $firstLine = $this->getRows(0);
                $nbFields = count($firstLine);
                $tbFields = [];
                for ($i = 1; $i <= $nbFields; $i++) {
                    $tbFields[] = self::number2lettre($i);
                }
                $this->setFields($tbFields);
            }
        }
        
        /**
         * Ajout des colonnes supplémentaires
         */
        if (($addFields = $this->getAddFields())) {
            $tbNewFields = [];
            if (is_array($addFields)) {
                $tbNewFields = array_merge($this->getFields(), $addFields);
            } elseif (is_numeric($addFields)) {
                // Ajout automatique de colonnes
                for ($i = $this->nbFields + 1; $i <= $this->nbFields + $addFields; $i++) {
                    $tbNewFields[] = self::number2lettre($i);
                }
                
                $tbNewFields = array_merge($this->getFields(), $tbNewFields);
            }
            $this->setFields($tbNewFields);
        }
        
        /*
         * Sinon on garde ceux qui sont définis et on test
         */
        $nbRows = count($this->getRows());
        for ($i = 0; $i < $nbRows; $i++, ++$this->currentRow) {
            if ($this->nbFields < count($this->getRows($i))) {
                $tbError[] = "Ligne " . $this->currentRow . ": Mauvais nombre de colonnes, attendu: " . $this->nbFields;
            }
        }
        
        if (count($tbError)) {
            throw new Exception(implode("\n", $tbError), self::IMPORT_BAD_FORMAT);
        }
        
        /*
         * Create columns
         */
        for ($i=0; $i < count($this->dbColumns); $i++){
            $this->table->addColumn($this->dbColumns[$i], $this->defaultType, ["notnull" => false, "collation" => $this->getCharset()]);
        }
        
        return $this;
    }
public function build()
    {
        $tbError = [];
        
        $this->currentRow = 1;
        
        /*
         * Supprime la premiere ligne
         */
        if ($this->isIgnoreFirstLine()) {
            $this->currentRow++;
            array_shift($this->rows);
        }
        
        /*
         * Si aucun champs n'a été défini
         */
        if (is_null($this->getFields())) {
            $this->currentRow++;
            
            // On prend la première ligne comme nom de colonnes ?
            if ($this->isheaderLikeFirstLine()) {
                if (is_null($this->rows) || count($this->rows) == 0) {
                    throw new Exception("Pas de données à traiter", self::IMPORT_NODATA);
                }
                $firstLine = array_shift($this->rows);
                $this->setFields($firstLine);
            } else {
                /*
                 * Sinon on génère automatiquement les noms de colonnes
                 */
                $firstLine = $this->getRows(0);
                $nbFields = count($firstLine);
                $tbFields = [];
                for ($i = 1; $i <= $nbFields; $i++) {
                    $tbFields[] = self::number2lettre($i);
                }
                $this->setFields($tbFields);
            }
        }
        
        /**
         * Ajout des colonnes supplémentaires
         */
        if (($addFields = $this->getAddFields())) {
            $tbNewFields = [];
            if (is_array($addFields)) {
                $tbNewFields = array_merge($this->getFields(), $addFields);
            } elseif (is_numeric($addFields)) {
                // Ajout automatique de colonnes
                for ($i = $this->nbFields + 1; $i <= $this->nbFields + $addFields; $i++) {
                    $tbNewFields[] = self::number2lettre($i);
                }
                
                $tbNewFields = array_merge($this->getFields(), $tbNewFields);
            }
            $this->setFields($tbNewFields);
        }
        
        /*
         * Sinon on garde ceux qui sont définis et on test
         */
        $nbRows = count($this->getRows());
        for ($i = 0; $i < $nbRows; $i++, ++$this->currentRow) {
            if ($this->nbFields < count($this->getRows($i))) {
                $tbError[] = "Ligne " . $this->currentRow . ": Mauvais nombre de colonnes, attendu: " . $this->nbFields;
            }
        }
        
        if (count($tbError)) {
            throw new Exception(implode("\n", $tbError), self::IMPORT_BAD_FORMAT);
        }
        
        /*
         * Create columns
         */
        for ($i=0; $i < count($this->dbColumns); $i++){
            $this->table->addColumn($this->dbColumns[$i], $this->defaultType, ["notnull" => false, "collation" => $this->getCharset()]);
        }
        
        return $this;
    }
Lecture/Vérification des données values
Lire des données et les traiter par setFields et setValues
@return mixed
@throws Exception