Проверка значения ячейки, пересчет и перезапись xlwt
Пытаемся достичь следующего:
Пройдитесь по списку с объектами данного типа:
#1 Стоимость: 12 Единица измерения: в месяц Количество: 3 пользователя
#2 Стоимость: 32 Единица измерения: в квартал Количество: 2 пользователя
etc
И сделайте экспорт прогноза xls на основе этого для каждого месяца:
Ян - 100 (312 + 322) Февраль - 36 (312) Март - 36 (312) Апр - 100 (312 + 322) и т.д
Моя реализация этого была следующей:
for po in queryset.select_related( 'quote__relatie', 'entity', 'delivery_address', 'requester', 'approver',): row_num += 1 ws.write(row_num, 0, str(po.costcode), font_style) ws.write(row_num, 1, str(po), font_style) ws.write(row_num, 2, str(po.quote.relatie), font_style) ws.write(row_num, 2, str(po.project), font_style)
for cl in po.inkooppost_set.all():
data = {}
if cl.eenheid.recurrent:
for pc in range(cl.aantal):
if cl.invoice_date:
invoice_date = (cl.invoice_date + datetime.timedelta(
days=(pc * cl.eenheid.frequency)))
#find columnnumber
r = relativedelta(invoice_date, month.order_date)
col_num = (r.years*12) + r.months + 3
#check whether another cost has been inferred and update cell
print(col_num)
if data.get(col_num):
data.update({col_num: data.get(col_num) + cl.eenheidprijs})
else:
data.update({col_num: cl.eenheidprijs})
ws.write(row_num, col_num, data[col_num], font_style)
else:
invoice_date = cl.invoice_date
r = relativedelta(invoice_date, month.order_date)
print(r)
col_num = (r.years *12) + r.months + 3
print(data.get(col_num))
if data.get(col_num):
data.update({col_num: data.get(col_num)+ cl.eenheidprijs})
else:
data.update({col_num: cl.eenheidprijs * cl.aantal})
ws.write(row_num, col_num, (cl.eenheidprijs * cl.aantal), font_style)
Использую dict для построения списка и перезаписи ячейки, но по какой-то странной причине он не принимает значение "col_num" в функции data.get(). Он принимает значение, если добавить прямое число, например "5". Я не могу понять, почему он не принимает значение - есть ли у вас идеи?
Возможно, есть лучший способ достичь желаемого результата? Есть ли функция xlwt для чтения ячейки перед сохранением?