首页 > 解决方案 > 使用 Openpyxl 在 Excel 中增加日期

问题描述

我正在尝试使用 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 表并将数据类型更改为整数(正如我在上面的代码中尝试做的那样),那么我的代码就可以正常工作。但是,如果相关单元格被格式化为日期,我会收到错误消息。

我认为在格式更改后保存工作表可以解决问题,但不幸的是不是......

非常感谢任何指针,

谢谢

标签: pythonpython-datetime

解决方案


推荐阅读