如何使用 OpenPyXL 格式化带有标题的列

Den*_*nis 3 python excel openpyxl

我正在尝试以日期格式格式化某些列。

我能够使用以下方法成功更改单个单元格的格式:

date_style = Style(number_format="M/D/YYYY")
ws['E7'].style = date_style
Run Code Online (Sandbox Code Playgroud)

但是有没有更简单的方法可以将一揽子格式应用于除标题之外的列?

我注意到 openpyxl 网站上的一些代码应该这样做,但它似乎不起作用。它在下面:

col = ws.column_dimensions['E']
col.number_format = "M/D/YYYY"
Run Code Online (Sandbox Code Playgroud)

我假设如果它确实工作正常,它也适用于标题。

编辑:我尝试了以下代码来格式化单元格:

ws.cell(row=1,column=5).style=date_style
Run Code Online (Sandbox Code Playgroud)

其工作方式与上面的 ws['E7'] 语句相同,但其格式应允许我在其上运行循环。但是当我执行以下操作时:

for i in ws.rows[1:]:
    ws.cell(row=i,column=5).style = date_style
Run Code Online (Sandbox Code Playgroud)

它返回错误:无法排序的类型:tuple() < int()

Den*_*nis 5

我想通了,虽然可能不是最优雅的方式:

date_style = Style(number_format="M/D/YYYY")
for col in range(5,8,2):
    for row in range(2,100,1):
        ws.cell(row=row,column=col).style = date_style
Run Code Online (Sandbox Code Playgroud)

我希望第 5 列和第 7 列具有日期格式。这确实奏效了,但当然,如果我有超过 100 行,我将不得不提高这个数字。