Проверка значения ячейки, пересчет и перезапись 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 для чтения ячейки перед сохранением?

Вернуться на верх