Używam xlrd i xlwt do przechodzenia przez określone komórki i sprawdzania ich pod kątem określonych kryteriów. Jeśli spełniają kryteria, idę dalej, jeśli nie, chcę kolorować tekst CZERWONY. Formatowanie z komórki na zmiany, niektóre mają kolor tła, niektóre są pogrubione, a niektóre mają różne rozmiary i wszystkie te różnice muszą zostać zachowane.Python xlwt: zachowaj wszystkie style, ale jeden
Czy jest jakiś łatwy sposób to zrobić?
mogę powielić bieżący format jednej z komórek wiem dość łatwo za pomocą easy_xf,
form = xlwt.easyxf(
'font: name Gotham Narrow Book, height 140, color red;'
'borders: left thin, right thin, top thin, bottom thin;'
'pattern: pattern solid, pattern_fore_colour white, pattern_back_colour white'
)
ale to oczywiście prowadzi do problemów, ponieważ nie każda komórka ma tego samego formatowania (jak wyjaśniono powyżej, niektóre mają kolory tła lub bez obramowania lub różne style czcionek). Spojrzałem w zachowaniu stylu z tego kodu z innego StackOverflow pytanie: to pojawia
def _getOutCell(outSheet, colIndex, rowIndex):
""" HACK: Extract the internal xlwt cell representation. """
row = outSheet._Worksheet__rows.get(rowIndex)
if not row: return None
cell = row._Row__cells.get(colIndex)
return cell
def setOutCell(outSheet, col, row, value):
""" Change cell value without changing formatting. """
# HACK to retain cell style.
previousCell = _getOutCell(outSheet, col, row)
# END HACK, PART I
outSheet.write(row, col, value)
# HACK, PART II
if previousCell:
newCell = _getOutCell(outSheet, col, row)
if newCell:
newCell.xf_idx = previousCell.xf_idx
# END HACK
outSheet = outBook.get_sheet(0)
setOutCell(outSheet, 5, 5, 'Test')
outBook.save('output.xls')
jakby styl odbywa się w Cell.xf_idx, ale po bliżej przyjrzeć się tej wartości, odkryłem, że jest liczbą całkowitą , pozostawiając mnie kompletnie zdumionym, jak wyodrębnić z niej pewne cechy stylu, aby zmienić jedynie kolor czcionki.
Jak już wcześniej wspomniałem, czy istnieje łatwy sposób na osiągnięcie tego?
Zaakceptuję twoją odpowiedź i nagrodzę cię nagrodą, ale jestem rozczarowany. Oczywiście już zachowuję formatowanie (jak inaczej miałbym te wszystkie komórki z tymi wszystkimi różnymi formatami?). Wszystko, co naprawdę mi dałeś, to ten link. Dałeś mi to, czego potrzebuję, aby rozwiązać ten problem, tak, ale nie wyjaśniłeś nic o 'xf_idx' lub stylach w ogóle (na co tak naprawdę liczyłem w tym pytaniu). W każdym razie, dziękuję za pomoc. – scohe001