Well thank you so much for this...I really appreciate..let me try it and I will let you know
On Wed, 27 Jan 2021 03:12 Gabriel Araya Garcia, <[email protected]> wrote: > In top of views files (views.py) you must put: > import openpyxl > from openpyxl import Workbook > from openpyxl.styles import Alignment,Border,Font,PatternFill,Side > from openpyxl.styles import colors > from openpyxl.styles import Font, Color,Fill > from openpyxl.styles.borders import BORDER_THIN > from openpyxl.drawing.image import Image as XLIMG > > ...and the view which prepare the excel out, you should review this > example: > > # CARTOLA DE RECAUDACION en excel > @login_required(login_url='login_ini') > def acsv(request): > nom_arch = nombrearch() # Se forma string para nombre de archivo excel > string_nombre = 'pac'+nom_arch > query = Pauta_aux.objects.all().order_by('rut') # viene filtrada x rango > de fecha > > reg_x = 0 > if query: > for fech_x in query: > reg_x = reg_x + 1 > else: > # estas dos instrucciones van juntas siempre > messages.error(request, "No existen movimientos que mostrar !!") > return redirect("info") > > mes_x = fechapautas.strftime('%m') > ano_x = fechapautas.strftime('%Y') > fecha_ini = str(ano_x)+"-"+str(mes_x).zfill(2)+"-01 00:00:00" > #total dias del mes > totdias = calendar.monthrange(int(ano_x),int(mes_x))[1] > fecha_fin = str(ano_x)+"-"+str(mes_x).zfill(2)+"-"+str(totdias)+" 00:00:00" > wb = Workbook() > ws = wb.create_sheet("hoja1",0) > ws.column_dimensions['A'].width = 5 > ws.column_dimensions['B'].width = 12 # rut paciente > ws.column_dimensions['C'].width = 36 # nombre paciente > ws.column_dimensions['D'].width = 17 # fecha > ws.column_dimensions['E'].width = 11 # rut cuid. > ws.column_dimensions['F'].width = 23 # nombre cuidador > ws.column_dimensions['G'].width = 12 # tipo cuidador > ws.column_dimensions['H'].width = 11 # rut cuid. > ws.column_dimensions['I'].width = 23 # nombre cuidador > ws.column_dimensions['J'].width = 12 # tipo cuidador > ws.column_dimensions['K'].width = 11 # rut cuid. > ws.column_dimensions['L'].width = 23 # nombre cuidador > ws.column_dimensions['M'].width = 12 # tipo cuidador > > ws.column_dimensions['Q'].width = 12 # rut cuid. > ws.column_dimensions['R'].width = 14# nombre cuidador > ws.column_dimensions['S'].width = 12 # tipo cuidador > ws.column_dimensions['T'].width = 14 # tipo cuidador > > r=4 # posicion de la primera fila > ws.cell(row=r-3,column=2).value = "CARTOLA DE RECAUDACION" > ws.cell(row=r-3,column=7).value = "1=Contratado" > ws.cell(row=r-2,column=7).value = "2=Extra" > > ws.cell(row=r-3,column=20).value = "1=Normal" > ws.cell(row=r-2,column=20).value = "2=Domingo" > ws.cell(row=r-1,column=20).value = "3=Festivo" > > ws.cell(row=r,column=2).value = "Rut paciente" > ws.cell(row=r,column=3).value = "Paciente" > ws.cell(row=r,column=4).value = "Fecha pauta" > > ws.cell(row=r,column=5).value = "Rut turno 1" > ws.cell(row=r,column=6).value = "Cuidador t1" > ws.cell(row=r,column=7).value = "Tipo Cuid t1" > > ws.cell(row=r,column=8).value = "Rut turno 2" > ws.cell(row=r,column=9).value = "Cuidador t2" > ws.cell(row=r,column=10).value = "Tipo Cuid t2" > > ws.cell(row=r,column=11).value = "Rut turno 3" > ws.cell(row=r,column=12).value = "Cuidador t3" > ws.cell(row=r,column=13).value = "Tipo Cuid t3" > > ws.cell(row=r,column=14).value = "$ turno 1" > ws.cell(row=r,column=15).value = "$ turno 2" > ws.cell(row=r,column=16).value = "$ turno 3" > > ws.cell(row=r,column=17).value = "$ paciente t1" > ws.cell(row=r,column=18).value = "$ paciente t2" > ws.cell(row=r,column=19).value = "$ paciente t3" > > ws.cell(row=r,column=20).value = "recargo" > ws.cell(row=r,column=21).value = "Tot.turnos" > cell_range = ws['B1':'T4'] > #cell_range.bold = True > > tot1=0 # valores de cuidador > tot2=0 > tot3=0 > tot_pac1 = 0 # valores de paciente (o lo que pagael apoderado) > tot_pac2 = 0 # valores de paciente (o lo que pagael apoderado) > tot_pac3 = 0 # valores de paciente (o lo que pagael apoderado) > va1=0 > va2=0 > va3=0 > > tRecauda = 0 > subtot = 0 > rut_x = '' > r=r+1 > for q in query: # pauta_aux - dia a dia > if q.rut != rut_x: > ws.cell(row=r,column=20).value = "Subtotal:" > ws.cell(row=r,column=21).value = subtot > > r=r+1 > ws.cell(row=r,column=20).value = "Tot.Anticipo:" > totAnticipo = anticipos(rut_x,fecha_ini,fecha_fin) > > ws.cell(row=r,column=21).value = totAnticipo > > r=r+1 > ws.cell(row=r,column=20).value = "Recauda:" > ws.cell(row=r,column=21).value = subtot - totAnticipo > > tRecauda = 0 > subtot = 0 > > va1=0 > va2=0 > va3=0 > > rut_x = q.rut # paciente > r=r+2 > > ws.cell(row=r,column=2).value = q.rut > ws.cell(row=r,column=3).value = q.paciente > ws.cell(row=r,column=4).value = q.fecha # fecha de la pauta > > ws.cell(row=r,column=5).value = q.rut_t1 # rut cuidador > ws.cell(row=r,column=6).value = q.turno1 # nombre cuidador > ws.cell(row=r,column=7).value = q.tipo_turno1 # Contratado - Extra > > ws.cell(row=r,column=8).value = q.rut_t2 # rut cuidador > ws.cell(row=r,column=9).value = q.turno2 # nombre cuidador > ws.cell(row=r,column=10).value = q.tipo_turno2 # Contratado - Extra > > ws.cell(row=r,column=11).value = q.rut_t3 # rut cuidador > ws.cell(row=r,column=12).value = q.turno3 # nombre cuidador > ws.cell(row=r,column=13).value = q.tipo_turno3 # Contratado - Extra > > ws.cell(row=r,column=14).value = q.valor_t1 # valor cuidador1 > ws.cell(row=r,column=15).value = q.valor_t2 # valor cuidador2 > ws.cell(row=r,column=16).value = q.valor_t3 # valor cuidador3 > > ws.cell(row=r,column=17).value = q.valor_p1 # valor paciente > ws.cell(row=r,column=18).value = q.valor_p2 # valor paciente > ws.cell(row=r,column=19).value = q.valor_p3 # valor paciente > #con recargo > if q.reca_cui != '1': > if q.valor_p1 != None: > ws.cell(row=r,column=17).value = q.valor_p1 * 1.5 > if q.valor_p2 != None: > ws.cell(row=r,column=18).value = q.valor_p2 * 1.5 > if q.valor_p3 != None: > ws.cell(row=r,column=19).value = q.valor_p3 * 1.5 > > if q.valor_p1 != None: > va1 = q.valor_p1 > if q.valor_p2 != None: > va2 = q.valor_p2 > if q.valor_p3 != None: > va3 = q.valor_p3 > #con recargo > if q.reca_cui != '1': > if q.valor_p1 != None: > va1 = q.valor_p1 * 1.5 > if q.valor_p2 != None: > va2 = q.valor_p2 * 1.5 > if q.valor_p3 != None: > va3 = q.valor_p3 * 1.5 > > ws.cell(row=r,column=21).value = va1 + va2 + va3 > subtot = subtot + va1 + va2 + va3 > if q.valor_t1 != None: > tot1 = tot1 + q.valor_t1 > if q.valor_p1 != None: > tot_pac1 = tot_pac1 + q.valor_p1 > > if q.valor_t2 != None: > tot2 = tot2 + q.valor_t2 > if q.valor_p2 != None: > tot_pac2 = tot_pac2 + q.valor_p2 > > if q.valor_t3 != None: > tot3 = tot3 + q.valor_t3 > if q.valor_p3 != None: > tot_pac3 = tot_pac3 + q.valor_p3 > > ws.cell(row=r,column=20).value = q.reca_cui # recargo cuidador > > r=r+1 # contador defilas > > ws.cell(row=r,column=20).value = "Subtotal:" > ws.cell(row=r,column=21).value = subtot > r=r+1 > ws.cell(row=r,column=20).value = "Tot.Anticipo:" > > > totAnticipo = anticipos(rut_x,fecha_ini,fecha_fin) > > ws.cell(row=r,column=21).value = totAnticipo > > r=r+1 > ws.cell(row=r,column=20).value = "Recauda:" > ws.cell(row=r,column=21).value = subtot - totAnticipo > tRecauda = 0 > #rut_x = q.rut > r=r+1 > > ws.delete_rows(5, 4) # elimina la fila 5, y mas 3 hacia abajo > > response = HttpResponse(content_type='application/vnd.ms-excel') > response['Content-Disposition'] = 'attachment; > filename='+string_nombre+'.xlsx' > wb.save(response) > return response > > This is running in production well now, but if there is another way to do > this, please write me to: gabrielaraya2011<arroba>gmail.com > El lunes, 25 de enero de 2021 a las 6:26:18 UTC-3, [email protected] > escribió: > >> Hello Everyone, >> I have a python file which I run on the terminal and give me the result >> that I want. I want to to do the same via a web app whereby instead of >> interacting with the terminal, I can do that via a browser through a form. >> I have decided to choose django as the server. Below is the file that I >> need to integrate to django. It works well in the terminal. I also have the >> excel file. >> Now my concern was how can I integrate it with django such that fields >> like link_name can be filed through a form and when I click a button >> should give the required results. Thank you fo your time. >> >> def find_fault(request): >> wb = xl.load_workbook("Find Fault App Documentation.xlsx") >> link_name = input("Link Name: ") >> test_location = input("Test Location: ") >> distance = float(input("Distance of Fault(km): ")) >> error = int(input("Error margin(m): ")) >> nature = input("Nature of Fault: ").lower() >> for sheet in wb.worksheets: >> if sheet.title == link_name: >> for i in range(2, sheet.max_row + 1): >> cell0 = sheet.cell(i, 1) >> if cell0.value == test_location: >> distance1 = distance * 1000 + sheet.cell(i, 2).value >> for value in range(2, sheet.max_row + 1): >> cell = sheet.cell(value, 2) >> cell1 = sheet.cell(value, 1) >> cell2 = sheet.cell(value, 3) >> if cell.value in range(int(distance1) - error, int(distance1) + error): >> if nature == "kink": >> print() >> print("Kink at {cell1.value}") >> print("Pairs at this point:") >> print(cell2.value) >> elif nature == "break": >> print() >> print("Break at {cell1.value}") >> print("Pairs at this point:") >> print(cell2.value) >> else: >> print() >> print("Fault at {cell1.value}") >> print("Pairs at this point:") >> print(cell2.value) >> >> for value in range(2, sheet.max_row): >> cell1 = sheet.cell(value, 2) >> cell2 = sheet.cell(value + 1, 2) >> cell3 = sheet.cell(value, 4) >> cell4 = sheet.cell(value, 1) >> >> if distance1 in range(cell1.value, cell2.value): >> if distance1 in range(cell1.value + error, cell2.value - error): >> if nature == "kink": >> print() >> print("Kink at {(distance1 - cell1.value) / 1000} " >> "km from {cell4.value}") >> print( >> "Pair at this point >> {cell3.value}") >> elif nature == "break": >> print() >> print("Break at {(distance1 - cell1.value) / 1000} " >> "km from {cell4.value}") >> print( >> "Pair at this point >> {cell3.value}") >> else: >> print() >> print("Fault at {(distance1 - cell1.value) / 1000} " >> "km from {cell4.value}") >> print( >> "Pair at this point >> {cell3.value}") >> >> if distance * 1000 > (sheet.cell(sheet.max_row, 2).value - (sheet.cell(i, >> 2).value + error)): >> print() >> print( >> "The Distance from {test_location} to {sheet.cell(sheet.max_row, >> 1).value} ") >> print("is about " >> "{(sheet.cell(sheet.max_row, 2).value - sheet.cell(i, 2).value) / 1000} >> km") >> > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/93c1a65c-eaa1-4580-9937-7d85f7e49a63n%40googlegroups.com > <https://groups.google.com/d/msgid/django-users/93c1a65c-eaa1-4580-9937-7d85f7e49a63n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAPsfuofG1U5pShuB157YAaGksDTgQQpSW_WqzC%2BTBnN3eRMPRQ%40mail.gmail.com.

