首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Openpyxl/Pandas根据Excel中的条件更改字体颜色和粗体字体并保存

Python Openpyxl/Pandas根据Excel中的条件更改字体颜色和粗体字体并保存
EN

Stack Overflow用户
提问于 2022-10-14 11:28:35
回答 1查看 60关注 0票数 0

尽管这个问题似乎已经得到了回答,但我担心有些帖子可能已经过时了,或者openpyxl已经不推荐这个功能了。

我需要根据特定的条件使用Python在Excel文件中更改一些字体格式。如果在“MIC”和“B5BA”列中,单元格== '2个人输入错误‘,则将单元格字体颜色更改为红色,并将字体设置为粗体。我按照教程和其他例子找到了一个tee,但是字体没有改变。我遍历列和行以获得单元格坐标,如果单元格值满足条件,则比较单元格内的值,更改字体。在我保存的文件中,单元格字体没有改变。

我发布了一些代码,这些代码将自动从df中编写excel工作簿,然后读取Excel工作簿。openpyxl不赞成这种功能吗?我们很感激你的帮助!密码在下面。

代码语言:javascript
复制
import pandas as pd
from openpyxl.styles import Font, Color, colors
from openpyxl import Workbook, load_workbook
from openpyxl.utils import get_column_letter

data = [
    [1, '2022-10-10', '2022-10-10', 'Monday', 'Lunch', '2 Person Entry Error', '2 Person Entry Error', None],
    [1, '2022-10-10', '2022-10-10', 'Monday', 'Dinner', '2 Person Entry Error', '2 Person Entry Error', None],
    [2, '2022-10-10', '2022-10-10', 'Monday', 'Dinner', 'John', None, None],
    [2, '2022-10-10', '2022-10-11', 'Tuesday', 'Lunch', 'Bob', 'Mackenzie ', None],
    [3, '2022-10-10', '2022-10-11', 'Tuesday', 'Dinner', '2 Person Entry Error', '2 Person Entry Error', None],
    [3, '2022-10-10', '2022-10-12', 'Wednesday', 'Lunch', '2 Person Entry Error', '2 Person Entry Error', None]
]
cols = ['Store', 'Start Date', 'Date', 'Day of Week', 'Shift', 'MIC', 'B5BA', 'Task']
df = pd.DataFrame(data, columns=cols)
df.to_excel('input.xlsx', index=False)

input_file_path = 'input.xlsx'
output_file_path = 'output.xlsx'

wb = load_workbook(input_file_path)
ws = wb.active

col_start = 6
col_end = 7
row_start = 2
row_end = ws.max_row

for col_num in range(col_start, col_end + 1):
    col_letter = get_column_letter(col_num)
    for row_num in range(2, row_end + 1):
        # cell_coordinate = ws.cell(row=row_num, column=col_num)
        cell_coordinate = ws[f'{col_letter}{row_num}']
        print(cell_coordinate, f'{col_letter}{row_num}')
        if cell_coordinate.value == '2 Person Entry Error':
            cell_coordinate = Font(color='FF0000', bold=True)

wb.save(output_file_path)
wb.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-14 11:45:04

如果没有提到的“例子”的任何链接,就不可能判断你是否在做与他们所做的广告完全相同的事情。无论哪种方法,修复都应该如下所示。更改:

代码语言:javascript
复制
            cell_coordinate = Font(color='FF0000', bold=True)

转入:

代码语言:javascript
复制
            cell_coordinate.font = Font(color='FF0000', bold=True)

documentation

output.xlsx结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74068530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档