Importar datos de Excel a MySQL | PhpSpreadSheet

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ก.ย. 2024
  • Aprende a leer e importar datos de Excel a MySQL con la biblioteca PhpSpreadsheet.
    📑 PhpSpreadsheet: phpspreadsheet...
    💻 Instalar PhpSpreadsheet: • Crear archivo de Excel...
    💻 Tutorial para composer: • Cómo instalar Composer...
    ☕️🍺 Invítame un café o una cerveza: www.paypal.me/...
    🤝 Únete a este canal con beneficios: www.youtube.co...
    📲 Facebook: www. Cod...
    📸 Instagram: / codigosdprogramacion
    🐦 Twitter: / mroblesdev
    🌐 Sitio web: codigosdeprogr...
    👨‍🏫 Contacto y asesorías: codigosdeprogr...
    🎁 Hosting con descuento: www.hostg.xyz/...
    POR FAVOR, ¡SUSCRÍBETE!
    #phpspreadsheet #php #mysql

ความคิดเห็น • 82

  • @jaironaranjo3654
    @jaironaranjo3654 11 หลายเดือนก่อน +1

    Mr. Robles Thank you so much for such great presentation your videos are the best on youtube

  • @josuevillatoro1533
    @josuevillatoro1533 2 ปีที่แล้ว +2

    Hola Marco, tienes alguna sugerencia para importar Fechas de alguna celda y celdas que contienen fómulas ?? Te agracería el apoyo.

  • @ferrcode1
    @ferrcode1 2 หลายเดือนก่อน +1

    Hola, estoy intentando cargar un excel de más de 1millon de registros y no ha sido posible, es por la data, si cargo uno de 15mil registros si lo puedo procesar, algun foro o ejemplo de como tratar con hojas de excel de muchos registros?

  • @jonathankevinsandovalnunez4397
    @jonathankevinsandovalnunez4397 3 ปีที่แล้ว +5

    Muy buen video me sirvio de mucho, como podría hacer cuando en excel tenga celdas con fecha y hora separado para que librería lo pueda leer?

    • @codigosdeprogramacion
      @codigosdeprogramacion  3 ปีที่แล้ว +3

      Necesitas darle formato así: stackoverflow.com/a/44304796/15777874

    • @carloandrecarazamendoza9629
      @carloandrecarazamendoza9629 2 ปีที่แล้ว +1

      lo pudiste resolver bro?

    • @alexterinte2932
      @alexterinte2932 2 ปีที่แล้ว +1

      Facil, en lugar de tener $ejemplo = $hojaActual->getCellByColumnAndRow(x,$indice);
      Tienes que aplicarle un formato a la celda que tenga la fecha y hora por separado de la siguiente manera:
      $celdaConFechaYHora = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($hojaActual->getCellByColumnAndRow(x, $indice)->getValue());
      $resultado = $dateTime->format("Y-m-d H:i:s");
      espero que te sirva, un saludo!

    • @gerardozamoramundo248
      @gerardozamoramundo248 2 ปีที่แล้ว

      @@alexterinte2932 oye bro, esa variable de $resultado, es la que debo de guardar en la BD, asi?

    • @elvisjosepavonzeas819
      @elvisjosepavonzeas819 ปีที่แล้ว

      @@codigosdeprogramacion y si haces un video de como hacerlo

  • @christianglez7983
    @christianglez7983 3 ปีที่แล้ว +1

    Justo lo que necesitaba, muchas gracias, como siempre muy buenos tutos

  • @bjdaniel18
    @bjdaniel18 ปีที่แล้ว +1

    gracias amigo buena ayuda :), consulta como se puede consultar el color de la celda ???

  • @alejandromartinezramirez3312
    @alejandromartinezramirez3312 3 ปีที่แล้ว +3

    Qué buenas prácticas con excel, lastima que no he econtrado algo tan completo para node js :(

  • @gabrieladiazrodriguez4122
    @gabrieladiazrodriguez4122 9 หลายเดือนก่อน +1

    Muy buen video. Me ayudo muchísimo

  • @laverdadin-absoluta9526
    @laverdadin-absoluta9526 2 ปีที่แล้ว +3

    Hola que tal, podrías enseñar como seleccionar un archivo desde tu pc con un campo de seleccionar archivo y un boton de subir, asi con los ejemplos que muestras como seleccion de celdas especificas

    • @alexterinte2932
      @alexterinte2932 2 ปีที่แล้ว +1

      Muy fácil, aplica un Input File en el formulario que acepte ficheros XLS. Luego, ese fichero guardalo en una ruta de tu proyecto, posteriormente en la ruta del archivo del excel, en lugar de ponerla a mano, coge la variable en donde almacenas la ruta del fichero que has subido por el input y listo!

    • @gerardozamoramundo248
      @gerardozamoramundo248 2 ปีที่แล้ว

      @@alexterinte2932 esa misma duda tengo bro, lo he intentado, pero no comprendo aun como hacerlo en codigo, me podrias explicar unpoco mas, te lo agradeceria mucho bro!!!! ayuda..........

    • @kurono2033
      @kurono2033 2 ปีที่แล้ว +1

      @@gerardozamoramundo248

    • @gerardozamoramundo248
      @gerardozamoramundo248 2 ปีที่แล้ว

      @@kurono2033 probare tu solucion, gracias

  • @guidoarmijo5745
    @guidoarmijo5745 2 ปีที่แล้ว +1

    Pana por favor explica como seria el registro en el caso de un campo fecha.

  • @juliocesarlopezsanjuan3353
    @juliocesarlopezsanjuan3353 ปีที่แล้ว +1

    Eres grande crack, gracias :)

  • @skyphonesystems3126
    @skyphonesystems3126 3 ปีที่แล้ว

    Buenos días, una consulta esta librería y el proyecto lo utilizas junto localmente en tu htdocs de tu máquina, y como seria desde un hosting donde tu proyecto está en otro directorio. Agradecería la ayuda o tutoriales donde lo expliquen. Gracias

  • @kyovsiori22
    @kyovsiori22 2 ปีที่แล้ว +1

    Excelente Video!!!!

  • @andresjaramillojaram3661
    @andresjaramillojaram3661 2 ปีที่แล้ว +1

    Hola hermano...
    Muchas gracias por tu aporte, sirvió bastante.
    Solo tengo una inquietud, necesito q al obturar un botón de un formulario html, se busqué el archivo para importar los datos, el cuál puede estar en cualquier ruta del computador, no necesariamente en la raíz del proyecto
    Q detalles faltarían en el archivo leer.php, y en el archivo .html dónde debe estar el botón q debe ser obturado.
    1000 gracias por tu ayuda...!!!
    Like--->>

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      Se necesita recibir el archivo y almacenarlo de forma temporal para así leerlo

  • @Trakez12
    @Trakez12 2 ปีที่แล้ว +1

    Buen dia amigo sabes que realize un trabajo con spreadsheet igual a este que tienes tu mi pregunta es como puedo hacer que importe pero el archivo mas reciente en mi carpeta sin tener que cambiar manual el nombre

  • @Joseph-hg7ws
    @Joseph-hg7ws 2 ปีที่แล้ว +1

    Buen video, pero tengo un problema que al usar el IOFactory, me sale Undefined Type y aparece la ruta que se puso en el "use", alguien tiene una solución?

  • @erickharoldariasreategui1606
    @erickharoldariasreategui1606 2 ปีที่แล้ว +1

    Hola, muy buen video, como podríamos mantener el decimal de la celda cuando envió data desde mi BD, ya que cuando exporto el excel, en el excel ya no me muestra los decimales.
    Saludos y lo agradeceria mucho.

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      Debes agregar formato a las celdas, aquí puede revisar como
      phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/#decimal-and-thousands-separators

  • @marceloinv01
    @marceloinv01 ปีที่แล้ว

    Hola estoy necesitando extraer imagenes de un excel , sabes como el get que lo saca GRACIAS buen video

  • @abnervazquezlobato8029
    @abnervazquezlobato8029 2 ปีที่แล้ว

    Hola, excelente video. solo una pregunta.
    un sistema me genera un excel desordenado, similar a:
    nombre apaterno amaterno
    juan
    lopez hernandez
    como podría hacer para subir los apellidos para que se ordenen en donde van. ojala me puedas ayudar. :'( saludos.

  • @erickraymundo7386
    @erickraymundo7386 2 ปีที่แล้ว +1

    Hola! Puedo ocupar spreadsheet sin instalarlo mediante composer?

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      Si descargándolo desde GitHub github.com/PHPOffice/phpspreadsheet/

  • @federicorrico
    @federicorrico ปีที่แล้ว

    Gracias Marco por el aporte,
    ¿Cómo podriamos utilizar este código, con un excel que tiene password de escritura?

    • @codigosdeprogramacion
      @codigosdeprogramacion  ปีที่แล้ว +1

      Con getProtection(), aquí está la documentación phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#reading-protected-spreadsheet

  • @josemiguelaguilarmarquina7423
    @josemiguelaguilarmarquina7423 2 ปีที่แล้ว +1

    Hola hermano, discúlpame, ¿me puedes decir que versión usaste?, ya que me tira un error

  • @luiscifuentes5323
    @luiscifuentes5323 2 ปีที่แล้ว +1

    Hola amigo! Gran video ! Deseaba preguntarte algo , resulta que logro hacer la importacion correctamente , pero al ver los registros insertados en mi sistema existen 475 registros por ejemplo y en la plantilla de excel son 476 registros , a que se debe esto? y como podría solucionarlo? , Me sería de gran ayuda!! , sospecho que tal vez sea por el UTF-8 que tal vez se pierde un registro y me hace de esa forma el conteo, Un saludo!

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      el que falta serán los títulos? O tal vez como se está indicando desde el 2 por eso no agrega el primero

    • @luiscifuentes5323
      @luiscifuentes5323 2 ปีที่แล้ว +1

      @@codigosdeprogramacion Gracias por responder ! Ya vi cual era el problema, era la plantilla excel que tenia registros con cod_doc iguales y en db lo tengo como valor unico por eso los saltaba , igualmente Gracias!!

  • @mandob4129
    @mandob4129 ปีที่แล้ว

    sabes que necesito que mis usuarios en un wordpress suba archivos excel los cuales con unas formulas excel previamente establecidas descarten o aprueben ciertos datos que el usuario subira , sabes si con esta bibiloteca pueda hacer esto?

  • @carloandrecarazamendoza9629
    @carloandrecarazamendoza9629 2 ปีที่แล้ว +1

    excelente video, alguien sabe porque me cambia el formato de las fechas en el excel aparece "01/03/2021" y en la base de datos me lo guarda como "44297" de ante mano gracias

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      Por el formato de la celda, ese dato es un "número de serie" y solo debes agregarle formato de fecha a las celdas para que lo muestre bien.
      phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#write-a-date-or-time-into-a-cell

    • @alexterinte2932
      @alexterinte2932 2 ปีที่แล้ว +1

      Facil, en lugar de tener $ejemplo = $hojaActual->getCellByColumnAndRow(x,$indice);
      Tienes que aplicarle un formato a la celda que tenga la fecha y hora por separado de la siguiente manera:
      $celdaConFechaYHora = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($hojaActual->getCellByColumnAndRow(x, $indice)->getValue());
      $resultado = $dateTime->format("d-m-Y");
      espero que te sirva, un saludo!

    • @gerardozamoramundo248
      @gerardozamoramundo248 2 ปีที่แล้ว

      @@alexterinte2932 oye bro, no termino de entender, en la variable $resultado estas guardando la fecha ya formateada, ese valor es el que debo de insertar en la BD, asi?

  • @dvgeyeshield21
    @dvgeyeshield21 2 ปีที่แล้ว

    si quiero llevar esta implementacion a mi servidor de mi ágin web , ahi ya tiene implementada la libreria? para poder usarla

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      Desconocemos las características de tu servidor.
      Te refieres a la librería PhpSpreadSheet?

    • @dvgeyeshield21
      @dvgeyeshield21 2 ปีที่แล้ว

      @@codigosdeprogramacion uso el servidor de hostgatore,ahi debo pasar la libreria de PhpSpreadSheet? para que igual funcione

  • @yaesparzaf
    @yaesparzaf ปีที่แล้ว

    No me deja usar $spreadsheet = IOFactory::load($fileData); porque dice que IOFactory es una clase desconocida, alguien sabe cómo solucionarlo?

  • @slayerJDC2009
    @slayerJDC2009 2 ปีที่แล้ว +1

    Como sería para el formato de fecha YYYY-MM-DD o dd/mm/yyyy para el archivo en excel

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      De Excel a MySQL debe ser YYYY-MM-DD

    • @slayerJDC2009
      @slayerJDC2009 ปีที่แล้ว

      @@codigosdeprogramacionLo paso a formato YYYY-MM-DD y me sale números, que puedo hacer??
      2012-09-28 y me sale 41180, que solucion hay
      $fecha_nac = $hojaActual->getCell('K'.$indiceFila);
      asi lo estoy llamando la funcion getCellColumnandRow ya no sirve

    • @slayerJDC2009
      @slayerJDC2009 ปีที่แล้ว

      Lo paso a formato YYYY-MM-DD y me sale números, que puedo hacer??
      2012-09-28 y me sale 41180, que solucion hay
      $fecha_nac = $hojaActual->getCell('K'.$indiceFila);
      asi lo estoy llamando la funcion getCellColumnandRow ya no sirve

  • @juandanielsuarez837
    @juandanielsuarez837 3 ปีที่แล้ว +1

    sabes como se eliminan las cabeceras?

  • @abdallahhussein5997
    @abdallahhussein5997 2 ปีที่แล้ว

    How to
    1.protect worksheets and restrict user actions like row and column insertion, deletion, and resizing using php spreadsheet
    2.Protect cells using a lock cell feature to restrict user editing action in selected cells using php spreadsheet
    3.hide formula and set invisible using php spreadsheet

    • @codigosdeprogramacion
      @codigosdeprogramacion  2 ปีที่แล้ว

      Cada párrafo escríbelo de la misma forma en google y encontraras la respuesta

  • @ANKANVALL
    @ANKANVALL ปีที่แล้ว

    Alguien que le se haya salido este error que pueda corregirme
    Fatal error: Array and string offset access syntax with curly braces is no longer supported in \xampp\htdocs\Importar\Classes\PHPExcel\Calculation.php on line 2764

    • @codigosdeprogramacion
      @codigosdeprogramacion  ปีที่แล้ว

      Revisa las versiones de PHP y de la biblioteca para saber la compatibilidad

  • @jeronimohernandez4200
    @jeronimohernandez4200 3 ปีที่แล้ว

    Hola hermano....quisiera pedirte un favor...podrías subir un vídeo sobre archivos AEUR....esque en mi PC quedaron toooodooos los archivas en este tipo AEUR y no me deja abrirlos ni nada...podrías explicarme como repararlo... por favor lo necesito

    • @codigosdeprogramacion
      @codigosdeprogramacion  3 ปีที่แล้ว

      No tiene nada que ver con lo que hago pero lo más seguro es que sea un ransomware y es así espero que tengas respaldo sino olvídate de tus archivos porque muy difícilmente se recuperan.

  • @CesarArma
    @CesarArma ปีที่แล้ว

    gracias, pero deberias resubir el video de instalacion de spreadsheet con composer, por que ese video ya es muy viejo largo y dificil de entender

    • @codigosdeprogramacion
      @codigosdeprogramacion  ปีที่แล้ว

      Tu lo puedes hacer, o no?

    • @CesarArma
      @CesarArma ปีที่แล้ว +1

      @@codigosdeprogramacion que buena idea, recién pude instalar las librerías con composer y no hay muchos videos que expliquen de manera rápida el como hacerlo (en español)

  • @oscarhuaman
    @oscarhuaman ปีที่แล้ว +1

    Hola Amigo, al momento de hacer la importación se queda en el momento que encuentra una palabra con apostrofe, como soluciono ese problema, me sale algo así:
    Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JOTA', 'CALLE ALFREDO LAPOINT N° 845 2DO PISO- CHICLAYO.', 'RESTAURANT - SNA...' at line 2 in C:\xampp\htdocs\Excel\leer.php:48 Stack trace: #0 C:\xampp\htdocs\Excel\leer.php(48): mysqli->query('INSERT INTO ta...') #1 {main} thrown in C:\xampp\htdocs\Excel\leer.php on line 48

    • @codigosdeprogramacion
      @codigosdeprogramacion  ปีที่แล้ว

      Para guardar apostrofes se requieren convertir antes de insertar:
      $dato = addslashes($dato);

    • @oscarhuaman
      @oscarhuaman ปีที่แล้ว +1

      @@codigosdeprogramacion Hola Amigo, buen aporte sobre la solución del apostrofe.
      ahora tengo dos problemitas mas:
      - El tiempo de ejecución es de máximo de 120 segundos y necesito mas tiempo, ya que mi base de datos tiene un promedio de 10,000 registros:
      Fatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\htdocs\Excel\leer.php on line 20
      - El otro problemita es que el campo de Fecha y Time los importa asi:
      0000-00-00 00:00:00
      2044-07-05 00:00:00
      muchas gracias por tu aporte.

  • @agustinparedeslopez
    @agustinparedeslopez ปีที่แล้ว

    Hola amigo, me podrías ayudar?
    me sale este error:
    ( ! ) Fatal error: Uncaught Error: Call to undefined method PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::getHighestColumnn() in C:\wamp64\www\mesa_de_entrada\leer.php on line 15
    ( ! ) Error: Call to undefined method PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::getHighestColumnn() in C:\wamp64\www\mesa_de_entrada\leer.php on line 15
    y este es mi codigo:

  • @clementegr1963
    @clementegr1963 2 ปีที่แล้ว +1

    Después de intentar resolver el formato de la fecha de Excel para insertarla en mi base de datos con formato "date" que extrae PhpSpreadsheet en mi proyecto pude resolverlo obteniendo la columna de mis fechas con el método "getCell" en vez de "getCellByColumnAndRow".
    este es parte de mi código.
    $valrofecha = $hoja->getCell('B'.$indicefila)->getValue(); ¡¡¡¡("$indicefila es el valor que se recorre con el for")!!!!
    donde obtengo mis fechas por consiguiente hay que convertirla en un objeto de tiempo con la función "Date::excelToDateTimeObject($valrofecha)" de PhpSpreadsheet una vez echo hay que darle un formato a la fecha con "format('Y-m-d')" me quedo de la siguiente manera no olvidar incluir en su proyecto la ruta de "date".
    use PhpOffice\PhpSpreadsheet\Shared\Date;
    $valrofecha = $hoja->getCell('B'.$indicefila)->getValue();
    $date2 = Date::excelToDateTimeObject($valrofecha);
    $fechaF =$date2->format('Y-m-d');
    hay que corroborar que en verdad esta convirtiendo la fecha, después solo queda realizar el query y no debería de dar problema, por mi parte aun tuve que realizar la validación de que los valores no sean nulos ya que por alguna razón me traía las filas que había eliminado y que no estaban.