J'essaie de formatage conditionnel dans l'écrivain XLSX avec une échelle de 3 couleurs avec une valeur de 0 milieu au milieu. Je veux que toutes les valeurs négatives passent du rouge (numéro le plus bas) au jaune (quand la valeur est zéro) et tous les nombres positifs à l'échelle du jaune (à zéro) au vert (au plus haut).XLSX Writer Python-3 Échelle de couleurs avec le nombre comme milieu
La mise à l'échelle obtient tout foiré quand je effectuez les opérations suivantes ..
Quelque chose qui ressemblerait à ce qui suit dans Excel:
Je peux comprendre comment faire une 3 couleurs échelle écrivain XLSX, mais il ne marche pas semble être une option (je peux voir) pour point médian étant un nombre:
worksheet.conditional_format('G2:G83', {'type': '3_color_scale',
'min_color': "red",
'mid_color': "yellow",
'max_color': "green"})
Je puis essayé de br EAK vers le bas avec un critère avec un format appliqué à des valeurs supérieures à zéro et un en dessous de zéro
worksheet.conditional_format('G2:G83', {'type': '2_color_scale',
'criteria': '<',
'value': 0,
'min_color': "red",
'max_color': "yellow"})
worksheet.conditional_format('G2:G83', {'type': '2_color_scale',
'criteria': '>',
'value': 0,
'min_color': "yellow",
'max_color': "green"})
Mais cela ne semble pas fonctionner soit - si quelqu'un a des idées .. s'il vous plaît laissez-moi savoir .. serait vraiment j'apprécie.
Code complet exemple:
import xlsxwriter
workbook = xlsxwriter.Workbook('conditional_format.xlsx')
worksheet1 = workbook.add_worksheet()
# Add a format. Light red fill with dark red text.
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
# Add a format. Green fill with dark green text.
format2 = workbook.add_format({'bg_color': '#C6EFCE',
'font_color': '#006100'})
# Some sample data to run the conditional formatting against.
data = [
[34, 72, -38, 30, 75, 48, 75, 66, 84, 86],
[-6, -24, 1, -84, 54, 62, 60, 3, 26, 59],
[-28, 0, 0, 13, -85, 93, 93, 22, 5, 14],
[27, -71, -40, 17, 18, 79, 90, 93, 29, 47],
[0, 25, -33, -23, 0, 1, 59, 79, 47, 36],
[-24, 100, 20, 88, 29, 33, 38, 54, 54, 88],
[6, -57, -88, 0, 10, 26, 37, 7, 41, 48],
[-52, 78, 1, -96, 26, -45, 47, 33, 96, 36],
[60, -54, -81, 66, 81, 90, 80, 93, 12, 55],
[-70, 5, 46, 14, 71, -19, 66, 36, 41, 21],
]
for row, row_data in enumerate(data):
worksheet1.write_row(row + 2, 1, row_data)
worksheet1.conditional_format('B2:B12', {'type': '2_color_scale',
'criteria': '<',
'value': 0,
'min_color': "red",
'max_color': "yellow"})
worksheet1.conditional_format('C2:C12', {'type': '2_color_scale',
'criteria': '>',
'value': 0,
'min_color': "yellow",
'max_color': "green"})
worksheet1.conditional_format('C2:C12', {'type': '2_color_scale',
'criteria': '<',
'value': 0,
'min_color': "red",
'max_color': "yellow"})
worksheet1.conditional_format('D2:D12', {'type': '3_color_scale',
'min_color': "red",
'mid_color': "yellow",
'max_color': "green"})
workbook.close()
writer.save()
Voici ce que je reçois:
Comme vous pouvez le voir, la colonne B (la première colonne) n'a pas de couleur verte
colonne C n'a pas
rouge colonne D a 0 en vert
Toute idée comment faire la 3 étape avec mise à l'échelle zéro au milieu?
Merci