lunes, 21 de enero de 2019

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.



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.

12 comentarios :
Write comentarios
  1. Respuestas
    1. Muchas gracias Julian. Es bueno saber que las personas disfrutan de nuestro contenido. Saludos :D.

      Eliminar
  2. Un pregunta podemos utilizar hojas hechas con excel

    saludos y enhorabuena

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

      Eliminar
  3. 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

    ResponderEliminar
  4. 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.

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

      Eliminar
  5. Un genio Luis y un solidario, muchas gracias !!

    ResponderEliminar
  6. Excelente. funciona bien con Glade tambien. Gracias

    ResponderEliminar
  7. 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...

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

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .