Trabajando con Hojas de Calculo: Python y openpyxl

Hola amigos de Internet. Mi nombres es Luis, y les doy la bienvenida a Mi Diario Python.
En el articulo de hoy, tenemos un tutorial muy interesante, y de mucha utilidad.
Hoy aprenderemos a trabajar con hojas de calculo, todo desde Python utilizando la librería openpyxl.
Así que sin más preámbulos, comencemos.



Índice()

    Instalación de Openpyxl

    Antes de utilizar openpyxl, necesitamos tener openpyxl. La instalación es muy simple. Solo debemos escribir el siguiente comando en nuestra terminal o consola:
    python -m pip install openpyxl
    
    De esta manera la instalación comenzara. No tardara más de un minuto.
    Ahora sí, es momento de la acción.

    Creación de una Hoja Excel

    Muy bien, una vez que tengamos instalado openpyxl ya podremos utilizar sus métodos y funcionalidades.
    Comenzaremos creando nuestra primera hoja de calculo. Puedes abrir el editor de texto de tu preferencia y empezar a escribir el script.
    openpyxl nos proporciona el submodulo Workbook con el cual trabajaremos.
    # importamos el submodulo "Workbook"
    from openpyxl import Workbook
    
    # creamos el objeto Workbook
    wb = Workbook()
    
    # especificamos el nombre y la ruta del archivo
    filesheet = "./demosheet.xlsx"
    
    # guardamos el archivo
    wb.save(filesheet)
    
    Crear la hoja de calculo es muy fácil. Lo primero que hacemos es importar Workbook. Luego creamos el objeto Workbook. En la variable filesheet ingresamos el nombre y la ruta de nuestro nuevo archivo. En mi caso he especificado que el archivo se guarde en el directorio en el que estoy trabajando y cuyo nombre sera demosheet.xlsx. ¿Por que xlsx? recordemos que esa es la extensión de los archivo execel.
    Luego de ejecutar este código, el archivo deberá estar listo en la ruta que especificamos:

    Excelente, se ve muy bien.

    Ingresando datos en nuestra hoja de calculo

    Muy bien, ya tenemos nuestro archivo. Es momento de ingresar algunos datos en el.
    Para ingresar datos en nuestra hoja, utilizaremos el submodulo load_workbook. Veamos como:
    # importamos load_workbook
    from openpyxl import load_workbook
    
    # ruta de nuestro archivo
    filesheet = "./demosheet.xlsx"
    
    # creamos el objeto load_workbook
    wb = load_workbook(filesheet)
    
    # Seleccionamos el archivo
    sheet = wb.active
    
    # Ingresamos el valor 56 en la celda 'A1'
    sheet['A1'] = 56
    
    # Ingresamos el valor 1845 en la celda 'B3'
    sheet['B3'] = 1845
    
    # Guardamos el archivo con los cambios
    wb.save(filesheet)
    
    Para poder introducir datos en nuestra hoja de calculo, debemos utilizar load_workbook. Creamos una variable que contendrá la ruta de nuestro archivo creado anteriormente. Creamos el objeto load_workbook y le pasamos como argumento la ruta del archivo en el cual queremos escribir. Aplicamos active sobre el objeto load_workbook, guardándolo en una variable (sheet). La variable sheet ahora es un diccionario cuyas llaves son las celdas de la hoja de calculo. Así que para escribir en una celda utilizamos: sheet[CELDA] y asignamos los valores que contendrá esa celda. Por ultimo guardamos los cambiamos.
    Veamos como quedo:

    Muy bien, como podemos los datos se han escrito en las celdas correspondientes.
    Existe un inconveniente con esta manera de ingresar datos. Y es que es muy tedioso y muy ineficiente ingresar datos celda por celda. Pero no te preocupes, existe una forma de ingresar grupos de datos. Vemos como:
    # importamos load_workbook
    from openpyxl import load_workbook
    
    # ruta de nuestro archivo
    filesheet = "./demosheet.xlsx"
    
    # creamos el objeto load_workbook
    wb = load_workbook(filesheet)
    
    # seleccionaos el archivo
    sheet = wb.active
    
    # escribirmos los datos con sus respectivas filas y columnas
    datos = [('id', 'nombre', 'edad'),
       (0, "Jose", 35),
       (1, "Carlos", 27),
       (2, "Sofia", 24)]
    
    # recorremos las columnas y escribimos los datos
    for row in datos:
     sheet.append(row)
    
    # guardamos los cambios
    wb.save(filesheet)
    
    Solo escribimos el grupo de datos y los recorremos con un bucle para luego ingresarlos en la hoja de calculo. Resultado:

    Bueno, creo que debimos borrar los datos anteriormente creados.

    Leyendo datos

    Si sabemos escribir, deberíamos saber leer ¿no es cierto?. Veamos como:
    # importamos load_workbook
    from openpyxl import load_workbook
    
    # ruta de nuestro archivo
    filesheet = "./demosheet.xlsx"
    
    # creamos ell obejeto load_workbook
    wb = load_workbook(filesheet)
    
    # seleccionamos el archivo
    sheet = wb.active
    
    # Obtenemos el valor de la celda A1
    A1 = sheet['A1'].value
    
    # Obtenemos el valor de la celda B5
    B5 = sheet['B5'].value
    
    # Obtenemos el valor de la celda C5
    C5 = sheet['C5'].value
    
    # Mostramos los valores 
    celdas = [A1, B5, C5]
    for valor in celdas:
     print(valor)
    
    56
    jose
    35
    
    Muy bien, ahora puedes tus software para manipular hojas de calculo.
    ¿Alguna duda? ¿Alguna sugerencia? Puedes dejar tu comentario, con mucho gusto te responderemos.


    Si eres de los que les guste ver vídeo, aquí lo tienes:

    Sin más nada que decir, mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
    1. Unknown dice:

      Genial! Gracias !!!!!

      1. Luis Salcedo dice:

        Muchas gracias Julian. Es bueno saber que las personas disfrutan de nuestro contenido. Saludos :D.

    2. Unknown dice:

      Un pregunta podemos utilizar hojas hechas con excel

      saludos y enhorabuena

      1. Luis Salcedo dice:

        Sí, por supuesto. Openpyxl tiene soporte para trabajar con archivos xlsx/xlsm/xltx/xltm.

    3. lalo dice:

      Hola,
      Tengo que extraer de un excel 3 columnas, filtrando filas por el codigo de marca que debo ingresar, una de esas columnas es un importe que tengo que aplicarle un porcentaje que debo ingresar, con el resultado debo generar otro excel, podran darme una idea de como hacerlo.
      Gracias

    4. Unknown dice:

      Hola! Cómo siempre execelente material el que compartes... Me servirá para enseñar programación a chicos del secundario y a sus profesores también, después comento la experiencia aquí en el Norte de Argentina...

      Tenemos un Grupo de Telegram sobre Python y allí se publica bastante lo que compartes.

      El Grupo es Python Norte:

      Coordinar actividades presenciales en el Norte de Argentina sobre el Lenguaje de Programación Python y su Comunidad.

      @pythonnorte

      Saludos y siempre agradecidos aquí en el Norte de Argentina...!!! 1500km de BsAs.

      1. Luis Salcedo dice:

        Hola Ariel. De verdad, muchas gracias. Es un orgullo para mi saber que todo lo escribo les sirva para enseñar. Saludos.

    5. SerUnoMismo dice:

      Un genio Luis y un solidario, muchas gracias !!

      1. Luis Salcedo dice:

        Muchas gracias por tu comentario. Saludos.

    6. Unknown dice:

      Excelente. funciona bien con Glade tambien. Gracias

    7. Arturo Morales dice:

      Hola, gracias por el contenido.
      Tengo una pregunta, quiero exportar una informacion que ya tengo leida con el python, solo que no se como hacer para ponerla en una tabla que ya tengo hecha en otro archivo excel, como ejemplo: De un archivo, celdas "M7:M20" extraer de un archivo excel y esos datos los quiero pasar a otro archivo excel en las celdas "C7:C20" tan solo valores, no se como poder hacerlo, espero una respuesta, gracias...

    8. Lorena dice:

      Hola. Hay forma de saber cuántas filas usadas tiene el archivo de excel?

    9. Julio dice:

      Hola, una pregunta, tengo un archivo excel guardado en una tabla en binario, quiero trabajar con ese archivo, que podría hacer? si mando el nombre del archivo excel al guardar me sale error not found

    10. Ale dice:

      Hola, no es más eficiente vba? Python es superior en algún punto? Gracias.

    11. gabriel araya dice:

      ¿Como crear un "corte de control" usando OPENXL. Necesito sumar un campo de valores el cual tiene como condicion el campo codigo = '001'
      Te agradeceria la ayuda.
      gabrielaraya2011@gmail.com
      Chile

    12. redmaytals dice:

      Gracias por tus artículos, son de gran utilidad además de estar bien explicados para los que nos adentramos en este mundo.

      Saludos

    13. Unknown dice:

      Hola!, me pareció muy útil esta guia, pero tengo una duda, como podría hacer que Python escriba automáticamente (al modificar un Excel) en la siguiente linea?, lo que quiero hacer es un programa que organize las ganancias diarias en un archivo Excel, pero ¿cómo puedo hacer que por cada valor (ganancia diaria) que se ingrese en mi programa, automáticamente Python modifique el Excel inicial y en la siguiente linea escriba el valor ingresado?, espero su respuesta y muchas gracias por esta guia.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.