Я пытаюсь увеличить дату, используя 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 и изменим тип данных на целое число (как я пытаюсь сделать в моем коде выше), тогда мой код работает нормально. Однако, если соответствующие ячейки отформатированы как дата, я получаю сообщение об ошибке.
Я думал, что сохранение листа после изменения форматирования решит проблему, но, к сожалению, нет ...
Любые указателиочень ценится,
Спасибо
Роб