Python xlwt: сохранить все стили, кроме одного

Я использую xlrd и xlwt для просмотра определенных ячеек и проверки их по определенным критериям. Если они соответствуют критериям, я иду дальше, если нет, я хочу покрасить текст в КРАСНЫЙ цвет. Форматирование от ячейки к ячейке меняется, некоторые имеют цвет фона, некоторые выделены жирным шрифтом, а некоторые имеют разные размеры, и все эти различия необходимо сохранить.

Есть ли простой способ сделать это?

Я могу довольно легко скопировать текущий формат одной из известных мне ячеек, используя 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'
             )

но это, конечно, приводит к проблемам, поскольку не каждая ячейка имеет одинаковое форматирование (как я объяснял выше, у некоторых есть фоновые цвета, отсутствие границ или разные стили шрифта). Я изучил сохранение стиля с помощью этого кода из другого вопроса StackOverflow:

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')

Похоже, что стиль хранится в Cell.xf_idx, но, внимательно изучив это значение, я обнаружил, что это целое число, что оставило меня в полном недоумении относительно того, как извлечь из него определенные атрибуты стиля, чтобы я мог изменить только цвет шрифта.

Как я уже говорил, есть ли простой способ сделать это?


person scohe001    schedule 20.07.2013    source источник


Ответы (1)


Вам следует проверить модуль xlutils.styles, открыть Excel с помощью formatting_info= Верно, и сделайте свою логику и измените относительный стиль ячейки, а затем снова сохраните excel.

open_workbook(excel_file_full_path, formatting_info=True)
person Erxin    schedule 18.08.2013