Saltar al contenido

Ya trabajamos con este módulo haciendo una pequeña excel. Ahora vamos a formatear un poco los datos

Captura

De la hoja original hemos cambiado

#formatos
negrita = workbook.add_format({'bold': True})
moneda = workbook.add_format({'num_format': '#,##0'})

y lo aplicamos a la celdas de forma

# Cabeceras.
worksheet.write('A1', 'Comercial', negrita)

o

# Fila del total
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)',moneda)

También podemos darle color, tamaño y ...

Captura

#formatos
cabecera = workbook.add_format()
cabecera.set_font_color('blue')
cabecera.set_font_size(16)
cabecera.set_bold()

Y tambien podemos dar color a los nombres de libros

Captura

Este módulo da para mucho mucho.

Ahora os toca jugar con el ....

1

Durante el evento de esta semana que asistí genere datos para después utilizarlos en sql server y power bi.

Ahora vamos a mejorarlo, metiendo un campo fecha y quitando las columnas individuales.

Captura

Como podemos ver, mete la fecha de hoy en la columna Fecha y genera 25 registros.

Aquí os dejo el código:

import xlwt
import time
import random
import datetime

# cuantos registros quieres
repetir = int(input("Cuantos registros quieres tener: "))

#tramo de fechas
hoy = datetime.datetime.now().strftime('%d/%m/%Y')

# creamos el fichero excel y csv
wb = xlwt.Workbook()

# añadimos hoja
ws = wb.add_sheet('Datos sensor')

# escribimos encabezados
ws.write(0,0,'Fecha')
ws.write(0,1,'CPD')
ws.write(0,2,'Provincia')
ws.write(0,3,'Temperatura')

# lista de cpd
cpd = ["A","B","C"]
#lista de provincia
provincia = ["Madrid","Segovia","Murcia"]

# escribo columnas excel
col = 1
while col <= repetir:
ws.write(col,0,hoy)
ws.write(col,1,random.choice(cpd))
ws.write(col,2,random.choice(provincia))
ws.write(col,3,random.randint(20,27))
col = col + 1

# grabo Fichero ecel.
print(" GEnerado Fichero ... CPD_Temperaturas.xls")
wb.save('D:\CPD_Temperaturas.xls')

 

Intentaré mas adelnte meterle un rango de fechas. De momento lo dejamos así.

Si lo mejorais, avisr ;).

Vamos con una ejercicio o idea práctica que nos puede ser útil.

Os acordáis que hicimos un inventario en pantalla de lo fundamental que tenía nuestro equipo

Captura

Y que también lo pasamos a un fichero txt. Pues ahora toca a una excel

En el pogramita que hemos realizado lo vemos en pantalla y lo grabamos en una excel.

import time
import socket
import platform
import os
import os.path
import sys
import xlwt

print("Inventario equipo")
#datos en pantalla
print ('Sistema :', platform.system())
print ('Release :', platform.release())
print ('Version :', platform.version())
print ('Usuario :', os.getlogin())
print ('Nombre Maq.:', platform.node())
print ('Tipo Maq, :', platform.machine())
print ('Procesador :', platform.processor())
print ('Ip Maquina :', socket.gethostbyname(socket.gethostname()))

# creamos el fichero excel
wb = xlwt.Workbook()
# añadimos hoja
ws = wb.add_sheet('Mmi equipo')
# escribimos encabezados
ws.write(0,0,'Sistema')
ws.write(0,1,'Release')
ws.write(0,2,'Version')
ws.write(0,3,'Usuario')
ws.write(0,4,'Nombre Maq')
ws.write(0,5,'Procesador')
ws.write(0,6,'Ip Maquina')
# escribo columnas excel
col = 1
ws.write(col,0,platform.system())
ws.write(col,1,platform.release())
ws.write(col,2,platform.version())
ws.write(col,3,os.getlogin())
ws.write(col,4,platform.node())
ws.write(col,5,platform.machine())
ws.write(col,6,platform.processor())
ws.write(col,7,socket.gethostbyname(socket.gethostname()))
# grabo Fichero ecel.
print(" GEnerado Fichero ... Inventario_Equipo.xls")
wb.save('D:\Inventario_Equipo.xls')

El resultado lo podemos ver en  excel, calc, sql server, mysql, .....

Captura

Solo nos faltaría hacer un bucle que recorriera la red o las redes que tenemos en la empresa sin movernos de nuestro puesto de trabajo y nos saca un informe.

Para mi este módulo, de momento, es el mejor que he trabajado con el.

Vemos el resultado:

Captura

Una de las cosas que he visto es a la hora de trabajar con las formulas.

Captura

Como veis practicamente se trabajo como en xlwt

Lo que os llama la atención es cuando pongo la formula, la sencillez.

Aquí os dejo el código

import xlsxwriter

# Creamos hoja y libro excel
workbook = xlsxwriter.Workbook('D:\Sueldos.xlsx')
worksheet = workbook.add_worksheet('Sueldos')

# Nombrres de empleados y sueldos
sueldos = (
['Juan', 1000],
['Mar', 1200],
['Luis', 976],
['Ana', 999],
)

# Inicializa columnas y filas
row = 0
col = 0

# Rellenando
for nombre, sueldo in (sueldos):
worksheet.write(row, col, nombre)
worksheet.write(row, col + 1, sueldo)
row += 1

# Fila del total
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')

# Generado fichero y Cerramos excel
print("Generado fichero")
workbook.close()

A partir de ahora trabajaremos con este módulo cuando hagamos cosas de excel y python.

En el evento que asistí tuvimos que alimentar un Event Hub con datos de sensores. No lo teníamos y sacamos esta solución.

Captura

Este fichero lo generamos en python con el módulo  xlwt. Ya veremos en un próximo artículo como generar el mismo fichero pero en formato .csv

Vamos a ir explicando el código.

Captura

Primero llamamos a ls módulos que van a intervenir con el comando import.

Después le pedimos cuantos registros querremos, en el caso 25. Puedes poner todos los que quieras.

En nuestro caso sacamos 10.000.

Siguiendo el programa: abrir el fichero, ponemos nombre a la hoja y las cabeceras de columnas.

Captura

A continuación ponemos 2 tuplas con los datos que tambien van a intervenir como el  nombre de cpd y la provincia.

Por ultimo, metemos datos al azar en las columnas de la hoja de calculo  y grabamos.

Captura

Este fichero le pasamos ahora a SQL Server.

El código:

import xlwt
import time
import random

# cuantos registros quieres
repetir = int(input("Cuantos registros quieres tener: "))

# creamos el fichero excel y csv
wb = xlwt.Workbook()

# añadimos hoja
ws = wb.add_sheet('Enero')

# escribimos encabezados
ws.write(0,0,'DD')
ws.write(0,1,'MM')
ws.write(0,2,'AA')
ws.write(0,3,'HH')
ws.write(0,4,'MM')
ws.write(0,5,'CPD')
ws.write(0,6,'Provincia')
ws.write(0,7,'Temperaturar')

# lista de cpd
cpd = ["A","B","C"]
#lista de provincia
provincia = ["Madrid","Segovia","Murcia"]

# escribo columnas excel
col = 1
while col <= repetir:
ws.write(col,0,random.randint(1,30))
ws.write(col,1,random.randint(1,2))
ws.write(col,2,2016)
ws.write(col,3,random.randint(0,23))
ws.write(col,4,random.randint(0,59))
ws.write(col,5,random.choice(cpd))
ws.write(col,6,random.choice(provincia))
ws.write(col,7,random.randint(20,27))
col = col + 1

# grabo Fichero ecel.
print(" GEnerado Fichero ... CPD_Temperaturas.xls")
wb.save('D:\CPD_Temperaturas.xls')

Si tienes alguna idea y no la sabes implementar te puedes pasar por el feisbuk o tuister que esta ahí arriba y me lo dices.

Lo que puedes hacer también, es compartir este artículo como todos lq eu hay en este blog en tu redes sociales.

 

Como podeis observar se puede hacer multitud de cosas con python.

Navegando me encuentro con este módulo que tiene hasta un tuto de como trabajar hasta con macros.

https://xlsxwriter.readthedocs.org/en/latest/index.html

Captura

Ya veremos mas módulos interesantes de python. Ahora a jugar.....

....

Otro módulo que tenemos que instalar, xlrd.

El resultado que vamos a tener al utilizarlo

Captura

import xlrd

#abrimos la excel
book = xlrd.open_workbook("E:\empleados.xls")

#numero de pestañas y nombres
print ("Numero de hojas: ", book.nsheets)
print ("Nombre fichero(s): ", book.sheet_names())

#primera hoja
sh = book.sheet_by_index(0)

#numero de filas y columnas
print ("Nombre de hoja: ",sh.name)
print ("Filas: ",sh.nrows)
print ("Columnas: ",sh.ncols)

#recorrer la hoja
for rx in range(sh.nrows):
print (sh.row(rx))

Captura

Ya sólo queda la opción de modificar.

Su documentación: https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966

Vamo a ver  algunas de las posibilidades que nos da python en el tema de formatos que podemos aplicar.

Captura

Y el código

#!/usr/bin/env python
#-*- coding: UTF-8 -*-

import xlwt

fmt = xlwt.easyxf

encabezado = fmt('font: name Arial, color red, bold on;')
centrado = fmt('alignment: horiz centre')

wb = xlwt.Workbook()

full = wb.add_sheet("Taula del 5")

full.write(0, 0, "Tabla del 5", encabezado)

for x in range(1, 11):
full.write(x, 0, 5,centrado)
full.write(x, 1, "x",centrado)
full.write(x, 2, x,centrado)
full.write(x, 3, "=",centrado)
full.write(x, 4, xlwt.Formula('A%s*C%s' % (x+1, x+1)))

wb.save('E:\Tabla_5.xls')

Captura

Como hemos observado metemos el formato centrado y un resaltado.

Captura

Esto suma 2 números

import xlwt

wb = xlwt.Workbook()

ws = wb.add_sheet('Fechas')

ws.write(2, 0, 1)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))

wb.save('E:\suma.xls')

Y ahora temas de fecha

Captura

import xlwt
import datetime

wb = xlwt.Workbook()

ws = wb.add_sheet('Fechas')

estilo = xlwt.easyxf('',num_format_str='DD-MM-YY') ws.write(1, 0, datetime.datetime.now(),estilo)

wb.save('E:\ejemplos.xls')

Captura

Se puede hacer muchas cosas, ya iremos viendo

Todo es documentarse de este módulo y hacer pruebas

https://xlwt.readthedocs.org/en/latest/#

Ahora os toca jugar ...

Para ello vamos a utilizar el módulo xlwt.

Ya hemos visto en el blog como instalar módulos.

Vamos con la práctica

Captura

Y el código:

import xlwt

# creamos el fichero excel
wb = xlwt.Workbook()

# añadimos hoja
ws = wb.add_sheet('Empleados')

# escribimos encabezados
ws.write(0,0,'Cod_Empleado')
ws.write(0,1,'Nombre')

#Escribo columnas
ws.write(1, 0, 1969)
ws.write(1, 1, "Juan Carlos")

#Grabo Fichero ecel.

wb.save('E:\Codigos_empleados.xls')

Como veis, no tiene mucha historía.

Captura

Podemos complicarlo.

 

 

Python nos permite trabajar con Bases de Datos. En este caso vamos a ver como empezamos a trabajar con pypyodbc.

SQLAlchemy y PyPyODBC   son unos  "módulos" o "librerias" que nos sirve para conectar e interactuar con bases de datos ODBC compatibles desde un servicio, sitio web o aplicación basada en Python.

Vamos a ver como lo instalamos en Visual Studio.

Captura

Python Tools

DEspuçes Python Enviroments

Captura

Damos a install

Captura

y ahora sqlalchemy de la misma forma

Captura

En unos próximos articulos  vamos a trabajar con estos módulos.

Si queréis que funcionen programas pyton e powershel tal como asi

Captura

Tenéis que poner dentro de powershell

Captura

Vemos que ponemos un path para donde tenemos el programa que ejecutamos los programas de python y  otro para donde tenemos los ficheros.

Sencillo .... ahora toca jugar