Я создал форму, которая принимает пользовательский ввод, а затем выполняет функцию вычисления в Excel. Я написал весь код, но возникли проблемы с использованием этой функции. ниже приведен код функции view.py
def dpr(request):
def report():
userdate_date = request.POST.get('num1')
userpath = request.POST.get('num2')
# add = f'your num is {num1} and {num2}
path = r'\\10.9.32.2\adm\Ash\FY 2019-20\Sale detail sheet'
userpath1 = f'SALE DETAIL SHEET {userpath.upper()} 2020'
abc = os.path.join(path, userpath1+'.xlsx')
customers1 = [20,31,28,27,17,46,18,13,15,14,37,100125]
customers2 = [100051,100062,100072,100087,100071,100070]
customers3 = [100057,100056,100066,100068,100086,100091,100103,100126,100131,100145,100150,100152,100140,100165,100180]
x = datetime.datetime.now()
month = x.strftime("%B")
df = pd.read_excel(open(abc, "rb"), sheet_name= month.upper() ,index_col=None, header= None)
tarik = userdate_date
# program for sumifs and countifs for customers1 and appending data to Dpr
sum_list1 = []
count_list1 =[]
for i in customers1:
ab = df[df[2] == i]
a= (ab[ab[6]== tarik][8]).sum()
b= (ab[ab[6]== tarik][8]).count()
sum_list1.append(round(a,2))
count_list1.append(b)
app = xlwings.App(visible=False)
wb = app.books.open(r'\\10.9.32.2\adm\Ash\FY 2019-20\DAILY REPORT\DAILY REPORT FORMAT.xlsx')
# wb = xlwings.Book(r'\\10.9.32.2\adm\Ash\FY 2019-20\DAILY REPORT\DAILY REPORT FORMAT.xlsx')
# xlwings.App().visible=False
ws = wb.sheets['DPR']
ws.range('E7').options(transpose=True).value = count_list1
ws.range('F7').options(transpose=True).value = sum_list1
# program for sumifs and countifs for customers2 and appending data to Dpr
sum_list2 = []
count_list2 =[]
for i in customers2:
ab = df[df[2] == i]
a= (ab[ab[6]== tarik][8]).sum()
b= (ab[ab[6]== tarik][8]).count()
sum_list2.append(round(a,2))
count_list2.append(b)
ws.range('E20').options(transpose=True).value = count_list2
ws.range('F20').options(transpose=True).value = sum_list2
# program for sumifs and countifs for customers3 and appending data to Dpr
sum_list3 = []
count_list3 =[]
for i in customers3:
ab = df[df[2] == i]
a= (ab[ab[6]== tarik][8]).sum()
b= (ab[ab[6]== tarik][8]).count()
sum_list3.append(round(a,2))
count_list3.append(b)
ws.range('F27').options(transpose=True).value = sum_list3
ws.range('E27').options(transpose=True).value = count_list3
# print(sum_list3)
# print(count_list3)
dict1= {
'F7' : 'E49',
'F8' : 'E50',
'F9' : 'E51',
'F10' : 'E52',
'F11' : 'E53',
'F12' : 'E54',
'F13' : 'E55',
'F14' : 'E56',
'F15' : 'E57',
'F16' : 'E58',
'F17' : 'E59',
'F18' : 'E60',
}
for i,j in dict1.items():
num1 = 0
num1_new = ws.range(i).value
num2 = ws.range(j).value
ws.range(j).value = (num2+(num1_new - num1))
dict2= {
'F20' : 'E62',
'F21' : 'E63',
'F22' : 'E64',
'F23' : 'E65',
'F24' : 'E66',
'F25' : 'E67',
}
for i,j in dict2.items():
num1 = 0
num1_new = ws.range(i).value
num2 = ws.range(j).value
ws.range(j).value = (num2+(num1_new - num1))
dict3= {
'F27' : 'E69',
'F28' : 'E70',
'F29' : 'E71',
'F30': 'E72',
'F31' : 'E73',
'F32' : 'E74',
'F33' : 'E76', ##
'F34' : 'E77',
'F35' : 'E78',
'F36' : 'E79',
'F37' : 'E80',
'F38' : 'E81',
'F39' : 'E82',
'F40' : 'E83',
'F41' : 'E84',
}
for i,j in dict3.items():
num1 = 0
num1_new = ws.range(i).value
num2 = ws.range(j).value
ws.range(j).value = (num2+(num1_new - num1))
wb.save()
wb.close()
return render(request,'dpr.html')
ниже приведен код страницы html, который имеет значение dpr. html
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<title>Page Title</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' type='text/css' media='screen' href='main.css'>
<script src='main.js'></script>
</head>
<body>
<form action="dpr" method="post">
{% csrf_token %}
<b>Enter 1st num : <input type="text" name='num1'></b><br>
<br>
<b>Enter 2nd num : <input type="text" name='num2'></b><br>
<input type="submit">
</body>
</html>
, моя главная цель состоит в том, чтобы, когда пользователь дает введите html и нажмите кнопку отправки, после чего эта функция отчета должна быть вызвана и выполнить необходимые действия. вопрос заключается в том, как использовать функцию dpr при обработке запросов.