python

šŸComo crear un xls en Django

Django es un framework muy popular ( el omnipresente ) en proyectos web con Python. El modulo que vamos a usar para generar archivos Excel ( XLS ) se llama openpyxl.

Puedes instalarlo en tu computadora usando el comando pip, y puedes usarlo no solo en proyectos Django, sino tambien en scripts de administracion de python, etc.

pip install openpyxl

OpenpyXL es una libreria muy completa para el manejo de archivos XLS. Te permite trabajar con pestaƱas, formulas, estilos, etc. En NODEJS suelo utilizar otra libreria ( json-to-xls ) que como su nombre lo indica es mucho, mucho mas simple. Sin embargo, OpenpyXL a pesar de poder abarcara muchas opciones mantiene su simplicidad, lo cual se agradece.

Ahora bien, vamos al codigo. Lo primero es importar la libreriria

import openpyxl

Y con eso crear nuestro woorkbook ( este sera nuestro archivo xls final )

book = openpyxl.Workbook()

Recuerden que en excel tenemos pestaƱas en la parte inferior, esas se llaman sheets y con openxl podemos manejarlas a nuestro antojo. De momento solo vamos a seleccionar la pestaƱa por defecto.

sheet = book.active

Una vez que tenemos la variable sheet podemos agregar los registros a nuestro XLS, en este caso vamos a agregar una fila de cabecera primero y luego los datos

sheet.append( ( “Nombre”,”Telefono”, “Email” ) )
for p in personas:
sheet.append( ( p.nombre, p.telefono, p.emailĀ  ) )

Con esto ya tenemos listo nuestro archivo XLS. Ahora solo hace falta guardarlo o descargarlo. Vamos a mostrar las dos opciones:

Guardarlo

book.save(“/tmp/nuevoxls.xls”)

Descargarlo

response = HttpResponse(content_type=’application/msexcel’)
response[‘Content-Disposition’] = ‘attachment; filename=nuevoxls.xls’
book.save(response)
return response

Y listo, ya tienen su nuevo XLS generado.

#HappyCoding

āš™ Docker Compose: no module named ordered_dict

Hoy dia, fallo la ejecucion de docker-compose en uno de mis servidores.

El problema:

E ImportError: No module named ordered_dict

La solución ?

Asegurarnos de tener la version urllib3-1.22, actualmente la version en produccion es la 1.26

Para tal efecto ejecutamos los siguientes comandos

pip uninstall urllib3
pip install urllib3=1.22

#HappyCoding

Python – Parametros de funcion en formato JSON

Cuando desarrollamos en python podemos tener una funcion con multiples argumentos.

def addCart( precio, cantidad, producto ):
pass

Si hemos recibido dichos parametros en un objeto JSON o los tenemos guardados en un diccionario, podemos pasarlo directamente. Python, se encargara de asignar a cada parametro la propiedad correspondiete del objeto. Para esto debemos pasar la variable a la funcion anteponiendo dos asteriscos.

addCart(**params)