如何使用 OpenPyXL 格式化 headers 列

How to format columns with headers using OpenPyXL

我正在尝试以日期格式设置某些列的格式。

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

date_style = Style(number_format="M/D/YYYY")
ws['E7'].style = date_style

但是除了 header 之外,是否有更简单的方法将一揽子格式应用于列?

我注意到 openpyxl 网站上的一些代码本应执行此操作,但似乎不起作用。如下:

col = ws.column_dimensions['E']
col.number_format = "M/D/YYYY"

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

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

ws.cell(row=1,column=5).style=date_style

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

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

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

我想出来了,虽然可能不是最优雅的方法:

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

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