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

时间:2016-05-12 17:36:52

标签: python excel openpyxl

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

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

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

但除了标题之外,是否有更简单的方法将封面格式应用于列?

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

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

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

编辑:我尝试使用以下代码格式化单元格:

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

它返回错误:unorderable类型:tuple()< INT()

1 个答案:

答案 0 :(得分:4)

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

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行,我将不得不提高这个数字。