问题描述
我正在使用pyopenxl输出一些excel电子表格,我遇到了字体条件格式设置问题.我想用红色突出显示小于0的单元格,这是我所做的:
I am using pyopenxl to output some excel spreadsheets, I encountered a problem with font conditional formatting. I want to highlight the cells lesser than 0 with red color and here's what I've done:
from pyopenxl import formatting, styles
red_font = styles.Font(size=self.font_size, bold=bold, color=self.red_color_font)
red_fill = styles.PatternFill(start_color=self.red_color, end_color=self.red_color, fill_type='solid')
self.ws.conditional_formatting.add(
cell.coordinate,
formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font)
)
因此,我只是为字体和填充创建样式,并将其应用于我的单元格.不好的是,它不起作用.一旦我从CellIsRule()
中删除了字体格式,一切都会恢复正常,并且我的单元格被红色填充.但是问题是我也需要更改颜色,有人知道我的代码有什么问题吗?或者也许与openpyxl?
So I simply created styles for font and fill and applied them for my cell. The bad thing is that it doesn't work. As soon as I remove the font formatting from the CellIsRule()
everything goes back to normal and I'm having my cell filled with red. But the thing is that I need to change the color as well, does anyone has any idea what's wrong with my code? Or maybe with openpyxl?
推荐答案
以下代码使用openpyxl
版本2.2.6
对我有用:
The following code works for me using openpyxl
version 2.2.6
:
from openpyxl import formatting, styles
wb = Workbook()
ws = wb.active
red_color = 'ffc7ce'
red_color_font = '9c0103'
red_font = styles.Font(size=14, bold=True, color=red_color_font)
red_fill = styles.PatternFill(start_color=red_color, end_color=red_color, fill_type='solid')
for row in range(1,10):
ws.cell(row=row, column=1, value=row-5)
ws.cell(row=row, column=2, value=row-5)
ws.conditional_formatting.add('A1:A10', formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
ws.conditional_formatting.add('B1:B10', formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill))
wb.save("test.xlsx")
显示如下:
对于openpyxl 2.5.1版,CellIsRule
现在位于rule
中,如下所示:
For openpyxl version 2.5.1,CellIsRule
is now inside rule
as follows:
from openpyxl import formatting, styles, Workbook
wb = Workbook()
ws = wb.active
red_color = 'ffc7ce'
red_color_font = '9c0103'
red_font = styles.Font(size=14, bold=True, color=red_color_font)
red_fill = styles.PatternFill(start_color=red_color, end_color=red_color, fill_type='solid')
for row in range(1,10):
ws.cell(row=row, column=1, value=row-5)
ws.cell(row=row, column=2, value=row-5)
ws.conditional_formatting.add('A1:A10', formatting.rule.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
ws.conditional_formatting.add('B1:B10', formatting.rule.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill))
wb.save("test.xlsx")
这篇关于openpyxl字体条件格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!