Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Consultar Personal
- personal_list = list(Personal.objects.all())
- # ESTABLECER BORDES
- thin_border = Border(
- left=Side(style='thin'), right=Side(style='thin'),
- top=Side(style='thin'), bottom=Side(style='thin')
- )
- # Creamos el libro de trabajo
- wb = Workbook()
- # Definimos como nuestra hoja de trabajo, la hoja activa, por defecto la primera del libro
- ws = wb.active
- ws.title = "Nomina"
- # En la celda B1 ponemos el texto 'REPORTE DE PERSONAS'
- ws.merge_cells('B2:I2')
- ws['B2'] = 'Listado en Nomina'
- ws['B2'].alignment = Alignment(horizontal='center')
- # ws.cell(row=2, column=2).border = thin_border
- b2 = ws['B2']
- b2.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- # Creamos los encabezados desde la celda B3 hasta la E3
- ws['B3'] = '#'
- ws.cell(row=3, column=2).border = thin_border
- ws.cell(row=3, column=2).alignment = Alignment(horizontal='center')
- b3 = ws['B3']
- b3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['C3'] = 'Nombre'
- ws.cell(row=3, column=3).border = thin_border
- ws.cell(row=3, column=3).alignment = Alignment(horizontal='center')
- c3 = ws['C3']
- c3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['D3'] = 'Cedula'
- ws.cell(row=3, column=4).border = thin_border
- ws.cell(row=3, column=4).alignment = Alignment(horizontal='center')
- d3 = ws['D3']
- d3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['E3'] = 'Telefono'
- ws.cell(row=3, column=5).border = thin_border
- ws.cell(row=3, column=5).alignment = Alignment(horizontal='center')
- e3 = ws['E3']
- e3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['F3'] = 'Celular'
- ws.cell(row=3, column=6).border = thin_border
- ws.cell(row=3, column=6).alignment = Alignment(horizontal='center')
- f3 = ws['F3']
- f3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['G3'] = 'Correo'
- ws.cell(row=3, column=7).border = thin_border
- ws.cell(row=3, column=7).alignment = Alignment(horizontal='center')
- g3 = ws['G3']
- g3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['H3'] = 'Cargo'
- ws.cell(row=3, column=8).border = thin_border
- ws.cell(row=3, column=8).alignment = Alignment(horizontal='center')
- h3 = ws['H3']
- h3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['I3'] = 'Area'
- ws.cell(row=3, column=9).border = thin_border
- ws.cell(row=3, column=9).alignment = Alignment(horizontal='center')
- i3 = ws['I3']
- i3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['J3'] = 'Fec. Ingreso'
- ws.cell(row=3, column=10).border = thin_border
- ws.cell(row=3, column=10).alignment = Alignment(horizontal='center')
- j3 = ws['J3']
- j3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['K3'] = 'Fec. Salida'
- ws.cell(row=3, column=11).border = thin_border
- ws.cell(row=3, column=11).alignment = Alignment(horizontal='center')
- k3 = ws['K3']
- k3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['L3'] = 'Tipo Sangre'
- ws.cell(row=3, column=12).border = thin_border
- ws.cell(row=3, column=12).alignment = Alignment(horizontal='center')
- l3 = ws['L3']
- l3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['M3'] = 'Sueldo'
- ws.cell(row=3, column=13).border = thin_border
- ws.cell(row=3, column=13).alignment = Alignment(horizontal='center')
- m3 = ws['M3']
- m3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['N3'] = 'Cargas'
- ws.cell(row=3, column=14).border = thin_border
- ws.cell(row=3, column=14).alignment = Alignment(horizontal='center')
- n3 = ws['N3']
- n3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['O3'] = 'Nro. Cta.'
- ws.cell(row=3, column=15).border = thin_border
- ws.cell(row=3, column=15).alignment = Alignment(horizontal='center')
- o3 = ws['O3']
- o3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['P3'] = 'Estado Civil'
- ws.cell(row=3, column=16).border = thin_border
- ws.cell(row=3, column=16).alignment = Alignment(horizontal='center')
- p3 = ws['P3']
- p3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- ws['Q3'] = 'Direccion'
- ws.cell(row=3, column=17).border = thin_border
- ws.cell(row=3, column=17).alignment = Alignment(horizontal='center')
- q3 = ws['Q3']
- q3.font = Font(bold=True, color=colors.DARKBLUE, size=12)
- cont = 4
- indice = 1
- for personal in personal_list:
- # agregamos la data, borde, alineacion
- ws.cell(row=cont, column=2).value = indice
- ws.cell(row=cont, column=2).border = thin_border
- ws.cell(row=cont, column=2).alignment = Alignment(horizontal='center')
- # agregamos la data, borde, alineacion
- ws.cell(row=cont, column=3).value = personal.nombre
- ws.cell(row=cont, column=3).border = thin_border
- ws.cell(row=cont, column=3).alignment = Alignment(horizontal='center')
- # agregamos la data, borde, alineacion
- ws.cell(row=cont, column=4).value = personal.cedula
- ws.cell(row=cont, column=4).border = thin_border
- ws.cell(row=cont, column=4).alignment = Alignment(horizontal='center')
- # agregamos la data, borde, alineacion
- if personal.telefono:
- ws.cell(row=cont, column=5).value = personal.telefono
- else:
- ws.cell(row=cont, column=5).value = '---'
- ws.cell(row=cont, column=5).border = thin_border
- ws.cell(row=cont, column=5).alignment = Alignment(horizontal='center')
- # agregamos la data, borde, alineacion
- ws.cell(row=cont, column=6).value = personal.celular
- ws.cell(row=cont, column=6).border = thin_border
- ws.cell(row=cont, column=6).alignment = Alignment(horizontal='center')
- # agregamos la data, borde, alineacion
- if personal.correo:
- ws.cell(row=cont, column=7).value = personal.correo
- else:
- ws.cell(row=cont, column=7).value = '--'
- ws.cell(row=cont, column=7).border = thin_border
- ws.cell(row=cont, column=7).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=8).value = personal.cargo.nombre
- ws.cell(row=cont, column=8).border = thin_border
- ws.cell(row=cont, column=8).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=9).value = personal.area.nombre
- ws.cell(row=cont, column=9).border = thin_border
- ws.cell(row=cont, column=9).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=10).value = personal.fec_ingreso
- ws.cell(row=cont, column=10).border = thin_border
- ws.cell(row=cont, column=10).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=11).value = personal.fec_salida
- ws.cell(row=cont, column=11).border = thin_border
- ws.cell(row=cont, column=11).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=12).value = personal.tipo_sangre
- ws.cell(row=cont, column=12).border = thin_border
- ws.cell(row=cont, column=12).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=13).value = str(personal.sueldo)
- ws.cell(row=cont, column=13).border = thin_border
- ws.cell(row=cont, column=13).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=14).value = personal.cargas_familiares
- ws.cell(row=cont, column=14).border = thin_border
- ws.cell(row=cont, column=14).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=15).value = personal.cta_banco
- ws.cell(row=cont, column=15).border = thin_border
- ws.cell(row=cont, column=15).alignment = Alignment(horizontal='center')
- if personal.estado_civil == 1:
- ws.cell(row=cont, column=16).value = 'Soltero(a)'
- elif personal.estado_civil == 2:
- ws.cell(row=cont, column=16).value = 'Casado(a)'
- elif personal.estado_civil == 3:
- ws.cell(row=cont, column=16).value = 'Divorciado(a)'
- elif personal.estado_civil == 4:
- ws.cell(row=cont, column=16).value = 'Viudo(a)'
- ws.cell(row=cont, column=16).border = thin_border
- ws.cell(row=cont, column=16).alignment = Alignment(horizontal='center')
- ws.cell(row=cont, column=17).value = personal.direccion
- ws.cell(row=cont, column=17).border = thin_border
- ws.cell(row=cont, column=17).alignment = Alignment(horizontal='center')
- cont = cont + 1
- indice = indice + 1
- # Establecemos el nombre del archivo
- nombre_archivo = "nomina.xlsx"
- # Definimos que el tipo de respuesta
- response = HttpResponse(content_type="application/ms-excel")
- contenido = "attachment; filename={0}".format(nombre_archivo)
- response["Content-Disposition"] = contenido
- # ESTABLECER DIMENSIONES A COLUMNAS
- ws.column_dimensions["A"].width = 10.0
- ws.column_dimensions["C"].width = 40.0
- ws.column_dimensions["D"].width = 20.0
- ws.column_dimensions["E"].width = 20.0
- ws.column_dimensions["F"].width = 20.0
- ws.column_dimensions["G"].width = 40.0
- ws.column_dimensions["H"].width = 20.0
- ws.column_dimensions["I"].width = 20.0
- ws.column_dimensions["J"].width = 20.0
- ws.column_dimensions["K"].width = 20.0
- ws.column_dimensions["L"].width = 20.0
- ws.column_dimensions["M"].width = 20.0
- ws.column_dimensions["N"].width = 10.0
- ws.column_dimensions["O"].width = 20.0
- ws.column_dimensions["P"].width = 20.0
- ws.column_dimensions["Q"].width = 50.0
- wb.save(response)
- # retorna el archivo excel
- return response
Add Comment
Please, Sign In to add comment