Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xlwt:保留除一个样式以外的所有样式_Python_Xlwt - Fatal编程技术网

Python xlwt:保留除一个样式以外的所有样式

Python xlwt:保留除一个样式以外的所有样式,python,xlwt,Python,Xlwt,我使用xlrd和xlwt检查某些单元格,并检查它们是否符合某些标准。如果它们符合我继续讨论的标准,如果不符合,我想将文本涂成红色。单元格之间的格式会发生变化,一些单元格有背景色,一些单元格粗体,一些单元格大小不同,所有这些差异都需要保留 有什么简单的方法可以做到这一点吗 我可以使用easy_xf相当轻松地复制我知道的其中一个单元格的当前格式 form = xlwt.easyxf( 'font: name Gotham Narrow Book, height 14

我使用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中,但仔细查看此值后,我发现它是一个整数,这让我完全无法理解如何从中提取样式的某些属性,以便仅更改字体颜色


正如我之前所说,有什么简单的方法可以实现这一点吗?

您应该签出该模块,打开格式为_info=True的excel,然后执行逻辑并更改相对单元格样式,然后再次保存excel

open_workbook(excel_file_full_path, formatting_info=True)