J'ai donc du code qui applique une mise en forme conditionnelle à un fichier Excel basé sur des valeurs de cellule. Je voulais en ajouter quelques-unes à la même gamme basée sur le type "texte" en utilisant le critère "contenant". Ces colonnes sont remplies avec des chaînes de dates, et je voulais appliquer un format aux dates qui contiennent "2017".Le formatage conditionnel avec xlsx writer génère un fichier corrompu avec "text: containing"
est ici tout le bloc, et il fonctionne très bien avec la mise en forme conditionnelle des cellules si je commente la mise en forme conditionnelle pour le texte:
mtbook = mytrials_writer.book
header_format = mtbook.add_format({'bg_color': '#7e98f7','bold': True})
notFoundFormat = sitebook.add_format({'bg_color':'red'})
notExpFormat = sitebook.add_format({'bg_color':'silver'})
foundFormat = sitebook.add_format({'bg_color':'lime'})
for worksheet in mtbook.worksheets():
# for every column
for i in range(len(subreportCols)):
# write the value of the first cell in the column to the first cell of that column
worksheet.write(0, i, subreportCols[i], header_format)
worksheet.set_column(0, 50, 17)
worksheet.set_row(0, 25, None)
worksheet.conditional_format('A2:Z100', {'type':'text', 'criteria': 'containing', 'value':'2017','format':notFoundFormat})
#worksheet.conditional_format('A2:Z100', {'type':'text', 'criteria': 'containing', 'value':'"2016-"','format':foundFormat})
#worksheet.conditional_format('A2:Z100', {'type':'text', 'criteria': 'containing', 'value':'"2015-"','format':foundFormat})
worksheet.conditional_format('A2:Z100', {'type':'cell', 'criteria': '==', 'value':'"Miss/Inc"','format':notFoundFormat})
worksheet.conditional_format('A2:Z100', {'type':'cell', 'criteria': '==', 'value':'"NotExp."','format':notExpFormat})
Si activer les lignes comme suit, le code sera exécuté , mais le fichier Excel s'ouvrira, demandez si je veux réparer parce que c'est corrompu; Si je dis oui, alors il n'y a pas de formatage dans le document.
worksheet.conditional_format('A2:Z100', {'type':'text', 'criteria': 'containing', 'value':'2017','format':notFoundFormat})
L'erreur dit: « Nous avons trouvé un problème avec un contenu dans le fichier. Voulez-vous essayer de récupérer autant que possible? Si vous faites confiance à la source de ce classeur, cliquez sur Oui »
Ceci est le journal des erreurs qui est retourné:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error255040_01.xml</logFileName><summary>Errors were detected in file 'C:\Users\mgancsos\Documents\Data Sources\Python\Testing\TQ_MyTrials_upload.xlsx'</summary><repairedRecords><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet1.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet2.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet3.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet4.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet5.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet6.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet7.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet8.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet9.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet10.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet11.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet12.xml part</repairedRecord><repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet13.xml part</repairedRecord><repairedRecord>Repaired Records: C</repairedRecord><repairedRecord>Repaired Records: C</repairedRecord><repairedRecord>Repaired Records: C</repairedRecord><repairedRecord xml:space="preserve">Repaired Records: </repairedRecord></repairedRecords></recoveryLog>
Merci!
Vous ne savez pas exactement pourquoi vous utilisez 'text' si 'cell' fonctionne On dirait que celui qui échoue est une date, alors as-tu essayé d'utiliser le type 'date'? – MrE
"Contenant" n'est pas quelque chose répertorié pour "cellule", seulement pour "texte". http://xlsxwriter.readthedocs.io/working_with_conditional_formats.html?highlight=conditionnel – Korzak
avez-vous essayé la date? – MrE