为什么不使用openpyxl打印或修改单元格值?

时间:2017-04-30 01:20:08

标签: python excel openpyxl

这是我的代码。 path2是创建和修改的新文件的路径。 .xlsx文件中确实存在包含“4/1/2017”

的单元格
wb = openpyxl.load_workbook(path2, read_only=False)
ws = wb.active
for row in ws.iter_rows():
    for cell in row:
        if cell.internal_value == "4/1/2017":
            print(cell.value)
            cell.internal_value = endDate          
wb.save(path2)

1 个答案:

答案 0 :(得分:1)

您正在将单元格值与字符串"4/1/2017"进行比较,但该单元格实际上可能包含由Excel格式化的日期值,看起来像4/1/2017' in the spreadsheet. If the cell actually contains a date, then openpyxl will read it as a datetime `object,你需要使用正确的值来测试日期时间的单元格值。

import datetime

if cell.value == datetime.datetime(2017, 4, 1):
    print(cell.value)

日期的cell.internal_valuefloat值,这是Excel存储日期的方式。如果要对此进行测试,则需要将其与日期的浮点表示进行比较。

如果您有一个指定日期的字符串,您可以使用datetime.datetime.strptime()将字符串转换为日期时间对象,以便与单元格内容进行比较。

date = datetime.datetime.strptime("4/1/2017", "%m/%d/%Y")
if cell.value == date:
    print(cell.value)