2017-04-12 1 views
1

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:

enter image description here

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:

enter image description here

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

Répondre

0

Je peux comprendre comment faire une échelle de 3 couleurs dans l'écrivain XLSX, mais il ne marche pas semblent être une option (je peux voir) pour point médian étant un nombre:

Vous pouvez utiliser les min_type, mid_type et max_type paramètres pour définir les types suivants:

min  (for min_type only) 
num 
percent 
percentile 
formula 
max  (for max_type only) 

Voir Conditional Format Options

Donc, dans votre cas, il devrait être quelque chose comme.

worksheet1.conditional_format('D2:D12', {'type': '3_color_scale', 
             'min_color': "red", 
             'mid_color': "yellow", 
             'max_color': "green", 
             'mid_type': "num"}) 

Cependant, je ne suis pas sûr si cela va résoudre votre problème global. Peut-être ajouter cela à votre exemple et si cela ne fonctionne pas, alors ouvrez une deuxième question.

Une chose que vous aurez à comprendre est de savoir comment faire ce que vous voulez dans Excel d'abord.Après cela, il est généralement plus facile de comprendre ce qui est nécessaire dans XlsxWriter.