Subir Excel y almacenar en la base de datos con SheetJS

88 views
Skip to first unread message

EDUARDYAZ

unread,
Aug 5, 2017, 4:36:37 AM8/5/17
to KumbiaPHP Framework
Buen día grupo

Quería compartir una librería que permite cargar de forma rápida archivos de excel del lado del cliente y lo pueden guardar en la base de datos

Librería:

Controller:

    /**
     * Método para almacenar datos enviados del archvio Excel
     */
    public function excel() {
        if (Input::hasPost('data')) {
            if (Temporal::setRegistroBaseExcel(Input::post('data'))) {
                DwMessage::valid('Los datos se han importado correctamente!');
                Input::delete('data'); //Para que no queden persistentes
                return DwRedirect::toAction('listar');
            }
        }
    }

Modelo:
    /**
     * Método para registrar en la base de datos
     */
    public static function setRegistroBaseExcel($productos, $existe_articulos = NULL) {
        $obj = new Temporal();
        $obj->begin();
        //Modifico el estado de los datos cargados luego y almacenar en las tablas marcas, articulos
        if (!empty($existe_articulos)) {
            $method = 'update';
            $items = explode(',', $existe_articulos);
            foreach ($items as $value) {
                $data = explode('-', $value); //el formato es 1-4 = recurso-rol
                $obj->id = $data[0];
                $obj->activo = '1';
                if (!$obj->update()) {
                    $obj->rollback();
                    return FALSE;
                }
            }
        }
        if (!empty($productos)) {
            foreach ($productos as $value) {
                $data = explode('-sisco-', $value); //el formato es 1-4 = recurso_id-perfil_id
                $obj->codigo = empty($data[0]) ? 'NULL' : $data[0];
                $obj->fecha_compra = empty($data[1]) ? 'NULL' : $data[1];
                $obj->factura = empty($data[2]) ? 'NULL' : $data[2];
                $obj->detalle = empty($data[3]) ? 'NULL' : $data[3];
                $obj->marca = empty($data[4]) ? 'NULL' : $data[4];
                $obj->stock = empty($data[5]) ? 'NULL' : $data[5];
                $obj->precio_unitario = empty($data[6]) ? 'NULL' : $data[6];
                $obj->usuario_id = Session::get('id');
                $obj->activo = '0';
                $obj->p_venta = DwOnline::setPrecioUtilidad($obj->precio_unitario);
//                if ($obj->stock > 2) {
                if (!$obj->create()) {
                    $obj->rollback();
                    return FALSE;
                }
            }
//            }
        }
        $obj->commit();
        return TRUE;
    }

Vista:
Adjunto el archivo de la vista por el tamaño del código

Espero les sirva!


Saludos
Eduardo Yánez
index.phtml

Fernando Gonzales

unread,
Nov 28, 2017, 11:10:41 AM11/28/17
to KumbiaPHP Framework
Hola como va, una consulta. es open source? Estoy buscando hacer algo similar con drag and drop api y luego usar file reader api. 
Reply all
Reply to author
Forward
0 new messages