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ď č. 1Nasledujú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)