gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:38:31 29 4
gpt4 key购买 nike

我正在使用 python 包 openpyxl 将数据写入 excel 工作表。我有一个包含三列的 excel 文件。我要将数千行数据转储到其中。我想要一种样式的特定格式的标题和其他样式的所有数据。我不想遍历所有单元格并专门设置样式,因为每当我添加更多数据时,我也必须为它们设置样式。所以我想一次创建一个 excel 模板,通过为标题行应用“style1”和为其余行应用“style2”,这样我就不必担心它们的样式而只需转储数据。无论如何设置预定义以将所有样式预定义到工作表中??

最佳答案

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

请注意,您必须为我曾经使用过的样式调用已保存的工作簿。也就是说,在这个例子中,我创建了一个工作簿,保存它,然后加载它并设置单元格格式,然后再次保存。

您可以在 openpyxl docs section on styles 中使用大量不同格式的示例.

这是一个使用来自 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")

Resulting Sheet

**更新(基于 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")

Third update to worksheet

关于python - 如何使用 openpyxl 将 excel 中的所有单元格格式化为单一样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46816397/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com