python - Xlsxwriter - 执行条件格式后不显示 0

标签 python conditional-formatting xlsxwriter

我有以下代码使用 Xlsxwriter 包进行条件格式化。我目前面临的唯一问题是,当单元格值为“0”(零)时,单元格会根据条件进行格式化,但数字不会出现。但是,当我单击该单元格时,我可以在 Excel 公式栏中看到该值。任何人都可以建议我如何显示零值。

db_conn()
dwh_cur.execute("""select prod.name,count(sale.id),count(is_defect), count(sale.is_defect)/count(sale.id) as Percent
from sales group by prod.name""")
df = dwh_cur.fetchall()

workbook = xlsxwriter.Workbook('Report.xlsx')
worksheet1 = workbook.add_worksheet('Report')

number_format = workbook.add_format({'num_format': '#,###', 'font_size': 14})

#Conditional format - Dark Red color
bad = workbook.add_format({'bg_color': '#ff0000',
                                'font_size': 14,
                                'font_name' :'Calibri',
                                'font_color': '#000000'}) 

#Conditional format - Red color
notbad = workbook.add_format({'bg_color': '#dd5b5b',
                                'font_size': 14,
                                'font_name' :'Calibri',
                                'font_color': '#000000'})

#Conditional format - Green color
good = workbook.add_format({'bg_color': '#008000',
                                'font_size': 14,
                                'font_name' :'Calibri',
                                'font_color': '#000000'})

#Conditional format - Orange color
ok = workbook.add_format({'bg_color': '#ffa500',
                                     'font_size': 14,
                                     'font_name': 'Calibri',
                                     'font_color': '#000000'}) 


worksheet1.conditional_format('E2:E200',
                              {'type': 'formula',
                               'criteria': '=$E2 <= 20',
                               'format': bad})

worksheet1.conditional_format('E2:E200',
                              {'type': 'formula',
                               'criteria': '=$E2 <= 49',
                               'format': notbad})

worksheet1.conditional_format('E2:E200',
                              {'type': 'formula',
                               'criteria': '=$E2 >= 80',
                               'format': good})

worksheet1.conditional_format('E2:E200',
                              {'type': 'formula',
                               'criteria': '=$E2 <= 79',
                               'format': ok})

column_format = workbook.add_format({
    'bold': 1,
    'border': 0,
    'font_size': 14,
    'font_color': 'black'})



## Raw data Sheet (Report 1)
worksheet1.conditional_format('A1:E1', {'type': 'no_errors', 'format': light_blue_bg_format})
worksheet1.set_column(0, 20, 30)

# Adding title on the first row
worksheet1.write('A1', 'Prod Name', column_format)
worksheet1.write('B1', 'Total Count', column_format)
worksheet1.write('C1', 'Defect Count', column_format)
worksheet1.write('D1', 'Percent', column_format)

# Pulling monthly data for columns for weekly raw data sheet
row = 1
col = 0

# Iterate through the array you have and unpack the tuple at each index
for elm1, elm2, elm3, elm4, elm5 in df:
    worksheet1.write(row, col, elm1, number_format)
    worksheet1.write(row, col + 1, elm2, number_format)
    worksheet1.write(row, col + 2, elm3, number_format)
    worksheet1.write(row, col + 3, elm4, number_format)
    row += 1


    workbook.close()

df 的示例 View

Prod Name,Total Count,Defect Count,Percent
Prod_A,10,3,30%
Prod_B,20,10,50%
Prod_C,8,0,0%
Prod_D,2,0,0%

鉴于上面的 df 示例 View ,最后 2 行不显示 0%,但根据上面设置的条件格式规则将单元格格式设置为红色。但是在点击单元格时,我们可以看到单元格中的 0%。

当 count(sale.is_defect) 为 0 时出现此问题,当我们单击公式栏时单元格为空白,但它显示为 0。这同样适用于有条件格式化的列。

最佳答案

该问题与条件格式无关。问题在这里:

number_format = workbook.add_format({'num_format': '#,###', 'font_size': 14})

#,### 数字格式导致零值被隐藏。我不知道这是否是有效格式。您可能需要在 Excel 中验证它。

像下面这样的东西会起作用:

number_format = workbook.add_format({'num_format': '0.000', 'font_size': 14})

# Or:

number_format = workbook.add_format({'num_format': '#,##0', 'font_size': 14})

关于python - Xlsxwriter - 执行条件格式后不显示 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52696386/

相关文章:

vba - 从条件格式确定单元格颜色的变化

如果当前单元格为空,则 Excel 条件格式公式

excel - 根据多个条件格式化

python - 使用 pd.xlsxwriter 根据该行中的单个单元格有条件地格式化整行

python - ExcelWriter 在书写时覆盖工作表

php - Excel 无法打开由 XLSXWriter 创建的文件

python - 使用 json_normalize 从多个级别获取元值

Python Tkinter : Display description in status bar

python - 需要重新审视 Python assertRegexpMatches

python - "Merge"Python 中的两列