如何使用openpyxl将excel中的所有单元格格式化为单一样式?

我正在使用python包openpyxl将数据写入Excel表。 我有一个三列的Excel文件。 我将把数千行的数据转储到它中。 我想在一种风格的特定格式的标题和其他风格的所有数据。 我不想遍历所有单元格,并专门设置样式,因为每当我添加更多的数据,我也必须为它们设置样式。 所以我想创build一个excel模板,通过为其他行应用'style1'和其他行的'style1',所以我不必打扰他们的样式,只是转储数据。 有无论如何设置预定义的所有样式到表中?

提供一个示例,说明如何使用特定格式格式化一行,然后使用其他格式格式化其他单元格。

请注意,您将不得不为我以前使用的样式调用保存的工作簿。 也就是说,在这个例子中,我创build了一个工作簿,保存它,然后加载并格式化单元格,然后再次保存。

在样式的openpyxl文档部分中可以使用一些不同格式的示例。

这是使用来自pandas_datareader模块的数据的完全可重复的示例。

import pandas as pd from openpyxl import Workbook from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.utils.dataframe import dataframe_to_rows import pandas_datareader.data as web #optional for example only #pull in your own dataframe and remove the next two lines if you want to df = web.DataReader("AMZN", 'google') df = df.tail(180) wb = Workbook() ws = wb.active for r in dataframe_to_rows(df, index=False, header=True): ws.append(r) wb.save("test.xlsx") wb = load_workbook('test.xlsx') ws = wb['Sheet'] style_1 = Font(color='0000FF00', bold=True, underline="single", size=15) style_2 = Font(color='000000FF', italic=True, size=10) for cell in ws["1:1"]: cell.font = style_1 for row in ws.iter_rows(min_row=2, max_col=5, max_row=len(df)+2): for cell in row: cell.font = style_2 #commented out my original snippet - preferred method recommended by Charlie Clark is ws.iter_rows() - above ''' for i in range(2, len(df)+2): current = "%d:%d" % (i, i) for cell in ws[current]: cell.font = style_2 ''' wb.save("test.xlsx") 

结果表单

**更新(根据OP询问有关格式化附加到现有工作表的单元格的评论):

如果您稍后将更多内容添加到此表单中,则可以同时为新的单元格进行格式设置。 将下面的代码添加到原始答案中。

 wb = load_workbook('test.xlsx') ws = wb['Sheet'] ws['A182'] = "New String" for cell in ws["182:182"]: cell.font = style_1 wb.save("test.xlsx") 

第三次更新到工作表