Использование Openpyxl для увеличения даты в Excel - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь увеличить дату, используя openpyxl. Вот пример кода:

import openpyxl
import os
import datetime

os.chdir("C:\\Personal\\Rentals\\xxxx")

wb = openpyxl.load_workbook(filename = 'Income_Receipts.xlsx', read_only=False)
sheet = wb['Sheet1']
cellreference = "B" +str(6)
cell = sheet[cellreference]

def LastRowNumber():
    global sheet, cellreference, cell
    i = 4
    BlankRowNumber = 0
    while BlankRowNumber == 0:
        i = i + 1
        cellreference = "B" + str(i)
        cell = sheet[cellreference]
        if cell.value == None:
            BlankRowNumber = i
    return i

def FormatDatesToNumbers(RowNumber):
    global sheet, cellreference, cell, wb
    #if sheet["B" + str(RowNumber)].value == "Airbnb":
    sheet["I" + str(RowNumber)].number_format = "######.0"
    sheet["F" + str(RowNumber)].number_format = "######.0"
    wb.save('Income_Receipts.xlsx')


def AirbnbDueDates(RowNumber):
    global sheet, wb
    if sheet.cell(row = RowNumber, column = 2).value =="Airbnb":
        DateAsFloat = sheet["F" + str(RowNumber)].value + 5
        sheet["I" + str(RowNumber)] = DateAsFloat + 5
        wb.save('Income_Receipts.xlsx')

LastRowToProcess = LastRowNumber() - 1

i = 4

while i <= LastRowToProcess:
    i = i + 1
    FormatDatesToNumbers(i)

i = 4

while i <= LastRowToProcess:
    i = i + 1
    AirbnbDueDates(i)

wb.save('Income_Receipts.xlsx')

Пожалуйста, извините код, если он немного неопрятный - я продолжаю пытаться обойти проблему, которая - я получаю следующее сообщение об ошибке: TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'int'

Проблема в том, что я пытаюсь увеличить заданную дату, например, на 5 дней - но я не могу смешать datetime.datetime and ints. Я пытался типизировать дату / время с типом int или float, но это не работает. ..

Если я вручную открою лист Excel и изменим тип данных на целое число (как я пытаюсь сделать в моем коде выше), тогда мой код работает нормально. Однако, если соответствующие ячейки отформатированы как дата, я получаю сообщение об ошибке.

Я думал, что сохранение листа после изменения форматирования решит проблему, но, к сожалению, нет ...

Любые указателиочень ценится,

Спасибо

Роб

...