如何解决如何使用python在条件为“大于或等于”的情况下更改excel单元格中字符串的字体颜色?
我有一个Excel文件,数据以字符串形式存储在不同的列中。我想应用条件> =,如果在该列的该单元格中满足条件,则将文本颜色更改为红色,而无需更改标题背景颜色。
数据: https://1drv.ms/x/s!ArCp0UbnlDouglYGkM83sQtckagM?e=e5nUgn
条件::如果 Qt._For_1s 列中的任何值大于或等于900.0,则该特定值的字体颜色应变为红色(不要与标头颜色),否则可以为绿色或与白色背景保持相同的黑色,并另存为xls文件。
注意:这些列值被保存为字符串,因为需要它们。 我尝试了几种条件格式,但无法解决我的特定问题。
def highlight_Qt(row):
ret=["" for _ in row.index]
if (row.Qt._For_1s) >= str(900.0): # also tried without str() no results
ret[row.index.get_loc("Qt._For_1s")]="background-color: Red"
return ret
data.style.apply(highlight_Qt,axis=1).to_excel("Data.xlsx",engine='openpyxl')
这弄乱了标题颜色,但未提供所需的结果。 我在过去5天的StackOverflow帖子中进行了查找,但找不到与此特定情况相关的任何帖子。
解决方法
一种方法是使用openpyxl打开文件并将其格式化
from openpyxl.styles import Font
from openpyxl import Workbook
# Open the workbook
from openpyxl import load_workbook
wb = load_workbook('file_name.xlsx')
ws = wb.active
# Get the columns name
ColNames = {}
Current = 0
for COL in ws.iter_cols(1,ws.max_column):
ColNames[COL[0].value] = Current
Current += 1
## Set the font color
ft = Font(color="00FF0000")
## Acces the cells
for row in ws.iter_rows():
cell = row[ColNames['Qt._For_1s']]
try:
if int(cell.value) > 900:
cell.font = ft
except:
pass
wb.save("styled.xlsx")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。