0

Importar Excel en MySQL usando Phpspreadsheet en CodeIgniter

PhpSpreadsheet es una biblioteca escrita en PHP puro y ofrece un conjunto de clases que le permiten leer y escribir varios formatos de archivo de hoja de cálculo como Excel y LibreOffice Calc

Instalación

Use Composer para instalar PhpSpreadsheet en su proyecto:

composer require phpoffice/phpspreadsheet

Si está construyendo su instalación en una máquina de desarrollo que está en una versión de PHP diferente al servidor donde se implementará, o si su versión de la CLI de PHP no es la misma que su tiempo de ejecución, como php-fpm Apache mod_php, entonces es posible que desee para agregar lo siguiente a su composer.json antes de instalar:

{
"require": {
"phpoffice/phpspreadsheet": "^1.23"
},
"config": {
"platform": {
"php": "7.3"
}
}
}

y luego corre

composer install

para garantizar que se recuperen las dependencias correctas para que coincidan con su entorno de implementación.

Ahora que ya tenemos en nuestro proyecto Phpspreadsheet, vamos a realizar una serie de pasos para poder subir un archivo Excel.

1.- Vamos a crear un formulario y un archivo de ejemplo para este ejercicio.

<form method="post" action="<?= base_url ?>spreadsheet_import" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" name="upload_file" class="form-control" placeholder="Ingresa un excel" id="upload_file">
    </div>
    <div class="form-group">
        <input type="submit" name="submit" class="btn btn-primary">
    </div>
</form>

Ahora la estructura de nuestro Excel será la siguiente.

2.- Controlador

En su controlador, obtenga el archivo y verifique la extensión.

pathinfo - get the file extension (PATHINFO_EXTENSION);

Nuestro metodo debe quedar de la siguiente manera:

public function spreadsheet_import(){
    $upload_file = $_FILES['upload_file']['name'];
    $extension = pathinfo($upload_file,PATHINFO_EXTENSION);

    if($extension == 'csv'){
        $reader= new \PhpOffice\PhpSpreadsheet\Reader\Csv();
    }else if($extension == 'xls'){
        $reader= new \PhpOffice\PhpSpreadsheet\Reader\Xls();
    }else {
        $reader= new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
    }

    $spreadsheet = $reader->load($_FILES['upload_file']['tmp_name']);
    $sheetdata = $spreadsheet->getActiveSheet()->toArray();
    $seetcount = count($sheetdata);

    if($seetcount > 1){
        for ($i=1; $i < $seetcount; $i++) { 
            $nombre = $sheetdata[$i][0];
            $edad = $sheetdata[$i][1];
            $pais = $sheetdata[$i][2];

            $param['nombre'] = $nombre;
            $param['edad'] = $edad;
            $param['pais'] = $pais;
            
            $this->Mregistro->registro($param);
            
        }
        redirect(base_url(), 'refresh');	
    }

}

De esta manera implementamos Phpspreadsheet en CodeIgniter para realizar la carga de dichos documentos.

Deja una respuesta

Your email address will not be published. Required fields are marked *