尽管这个问题似乎已经得到了回答,但我担心有些帖子可能已经过时了,或者openpyxl已经不推荐这个功能了。
我需要根据特定的条件使用Python在Excel文件中更改一些字体格式。如果在“MIC”和“B5BA”列中,单元格== '2个人输入错误‘,则将单元格字体颜色更改为红色,并将字体设置为粗体。我按照教程和其他例子找到了一个tee,但是字体没有改变。我遍历列和行以获得单元格坐标,如果单元格值满足条件,则比较单元格内的值,更改字体。在我保存的文件中,单元格字体没有改变。
我发布了一些代码,这些代码将自动从df中编写excel工作簿,然后读取Excel工作簿。openpyxl不赞成这种功能吗?我们很感激你的帮助!密码在下面。
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()发布于 2022-10-14 11:45:04
如果没有提到的“例子”的任何链接,就不可能判断你是否在做与他们所做的广告完全相同的事情。无论哪种方法,修复都应该如下所示。更改:
cell_coordinate = Font(color='FF0000', bold=True)转入:
cell_coordinate.font = Font(color='FF0000', bold=True)output.xlsx结果

https://stackoverflow.com/questions/74068530
复制相似问题