Я хотел бы отформатировать таблицу (xls или xlsx), чтобы любые ячейки, содержащие слово или заканчивающиеся на определенную строку, форматировались путем заполнения фона определенным цветом.Условно форматирование текстовых строк из Excel с использованием python
Например, если ячейка содержит слово «удалить», заполните его черным цветом и нарисуйте текст белым цветом. , если ячейка заканчивается на .pf, окрашивайте ячейку в красный цвет.
Я нашел подобный вопрос от несколько лет назад, что предложил следующее:
import xlrd
import xlutils.copy
inBook = xlrd.open_workbook('input.xls', formatting_info=True)
outBook = xlutils.copy.copy(inBook)
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')
В то время как это делает скопировать значения из input.xls в output.xls, это, кажется, не передать форматирование (тестовые значения из input.xls больше не форматируются при открытии output.xls, равно как и правила условного форматирования, присутствующие в «правилах управления» в excel.
Операции «если» для значений чисел, похоже, работают, но опять же, I Я ищу способ форматировать ячейки, содержащие определенные строки.
Вы пытались изменить файл на месте? Вы можете создать резервную копию файла перед запуском скрипта. – Alfe
я не думаю редактирование на месте возможен. от того, что я понимаю, xlutils позволяет копировать и изменять копию. если win32com может это сделать, это будет крутое направление, но я не знаю об этом. win32com также не является моей предпочтительной тактикой, потому что я хотел бы, чтобы этот скрипт работал на машинах без установленного excel (linux). – user2363458