reporte.py
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import xlsxwriter
import time
class Reporte():
COLUMNA = ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "Y", "Z")
anchos = {"A": 12, "B": 12, "C" :12, "D": 12, "E": 12, "F": 12,
"G": 12, "H": 12 , "I": 12, "J": 12, "K": 12,"L": 12, "M": 12,
"N": 12, "O": 12, "P": 12, "Q": 12, "R": 12, "S": 12, "T": 12,
"U": 12, "V": 12, "Y": 12, "Z": 12}
def __init__(self):
self.fecha = time.strftime("%y%m%d")
self.archivo = "tmp/reporte"+ self.fecha + ".xlsx"
self.QUERY = []
self.Encabesado = []
def NombreArchivo(self, nombre):
self.archivo = "tmp/"+ nombre + self.fecha + ".xlsx"
def __generarLibro__(self):
self.Libro = xlsxwriter.Workbook(self.archivo)
self.bold = self.Libro.add_format({'bold': True})
self.Hoja1 = self.Libro.add_worksheet("Totalizado")
def __escribir_linea__(self, datos, linea):
formato = self.Libro.add_format({'bg_color': '#e6ffff'})
mod = linea % 2
if mod > 0:
formato = self.Libro.add_format({'bg_color': '#ffe6ff'})
n = 0
for dato in datos:
celda = Reporte.COLUMNA[n] + str(linea)
self.Hoja1.write(celda, str(dato), formato)
self.__calculoAncho__(n, dato)
n = n + 1
self.ancho = Reporte.COLUMNA[n]
def __calculoAncho__(self, n, dato):
"""incremento el valor de una columna en funcion de la cantidad de letras"""
letras = len(str(dato))
lmaximo = Reporte.anchos[Reporte.COLUMNA[n]]
if letras > lmaximo:
#print(Reporte.COLUMNA[n], letras)
Reporte.anchos.update({Reporte.COLUMNA[n]: letras})
def __escribir_global(self):
n = 2
for query in self.QUERY:
self.__escribir_linea__(query, n)
n = n + 1
self.alto = str(n)
def __ajuste__(self):
Pn = self.ancho + self.alto
#print(Pn)
for columna in Reporte.anchos.keys():
a = Reporte.anchos[columna]
#print(columna, a)
self.Hoja1.set_column(columna+":"+columna, a)## esa desde hasta A:A
def __encabesado__(self):
#print(self.Encabesado)
if self.Encabesado == []:
#print("me salto los titulos")
return()
n = 0
for celda in self.Encabesado:
c = Reporte.COLUMNA[n] + "1"
self.Hoja1.write(c, str(celda))
n = n + 1
def ArmarLibro(self, estado="1"):
self.__generarLibro__()
self.__escribir_global()
self.__encabesado__()
self.__ajuste__()
self.fin()
return(self.archivo)
def fin(self):
self.Libro.close()