/ / String podmienené formátovanie "sa rovná" v Exceli pomocou Pythonu xlsxwriter - python, excel, string-matching, podmienené formátovanie, xlsxwriter

Stringové podmienené formátovanie "sa rovná" v programe Excel pomocou súboru Python xlsxwriter - python, excel, string-matching, podmienené formátovanie, xlsxwriter

Mám pomerne veľké tabuľky programu Excel, kde sompoužívam podmienené formátovanie. Avšak obsah bunky je relatívne krátky (max 3 písmená). Takže musím zodpovedať presne reťazec. Napríklad: "A" má byť naformátované, ale nič viac neobsahuje "A" ("ABC", "BCA", "BAC" atď.).

Skúsil som rôzne možnosti pomocou možností "text" a "bunka", ale neúspešne som zlyhal. Tu je môj testovací prípad:

import xlsxwriter

workbook = xlsxwriter.Workbook("conditional_format4.xlsx")
worksheet1 = workbook.add_worksheet()

format1 = workbook.add_format({"bg_color": "#FFC7CE",
"font_color": "#9C0006"})

data = [
["ABC", "BCA", 38, 30, 75, 48, 75, 66, 84, 86],
[6, 24, 1, 84, 54, 62, 60, 3, 26, 59],
[28, 79, 97, 13, 85, 93, 93, 22, 5, 14],
[27, "BAC", 40, 17, 18, 79, 90, 93, 29, 47],
[88, "ABC", 33, 23, 67, 1, 59, 79, 47, 36],
[24, "A", 20, 88, 29, 33, 38, 54, 54, 88],
[6, "BCA", 88, 28, 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, 0, row_data)


worksheet1.conditional_format("A1:J10", {"type": "text",
"criteria": "containing",
"value": "A",
"format": format1})

workbook.close()

Takže chcem porovnať len jednu bunku. Užívam si možnosti / nápady. Zdá sa, že je triviálne, ale mám veľa chýb, že sú súbory programu Excel nesprávne. Dúfam, že niekto našiel riešenie tohto problému.

Vykonáva sa v programe Excel 2010 (podmienené formátovanie -> zvýrazniť bunkové pravidlá -> rovnaké ako: typ A v textovom poli).

odpovede:

5 pre odpoveď č. 1

Nasledujúci podmienený formát XlsxWriter by mal fungovať:

worksheet1.conditional_format("A1:J10", {"type": "cell",
"criteria": "==",
"value": ""A"",
"format": format1})

Všimnite si, že ako v programe Excel by mal byť podmienený typ cell a hodnota by mala byť reťazec (s úvodzovkami).


1 pre odpoveď č. 2

Ak správne chápem, chcete, aby sa Python zhodoval s jedným znakom. Takže napríklad chcete naformátovať iba "A" a odmietnuť niečo ako "AB" a "AA".

Pre to musíte zodpovedať znaku a dĺžke.

"A" in string and len("A") == len(string)

Potom môžete použiť formátovanie na tie, ktoré zodpovedajú týmto kritériám.

Ak chcete použiť xlswriter conditional_format, podľa dokumentácia, môžete napodobňovať rovné správanie:

worksheet.conditional_format("B3:K12", {"type":     "cell",
"criteria": "==",
"value":    ""A"",
"format":   format2})

EDITED chyba v hodnote (to by malo byť reťazec, ako to naznačuje @jmcnamara)