如何在xlsxwriter中对conditional_format()使用行col符号

时间:2017-07-13 13:40:53

标签: python conditional-formatting xlsxwriter

我试图以excel语法对excel中的单元格进行一些格式化,基于excel中填充了多少行数据,我使用行索引来定义单元格区域。

请参阅以下代码以供参考:

# Write a conditional format over a range.
    target_sheet.conditional_format([row - len(line),1,row-1,2 ], {'type': 'cell',
                                         'criteria': '>=',
                                         'value': 10,
                                         'format': format1})

但这导致以下错误:

File "/usr/local/lib/python2.7/dist-packages/xlsxwriter/worksheet.py", line 80, in cell_wrapper
    int(args[0])
TypeError: int() argument must be a string or a number, not 'list'

我不确定如何继续这种方法,我们非常感谢任何帮助。 TIA!

3 个答案:

答案 0 :(得分:1)

正如3. Third Link所述,条件格式是Excel的一项功能,它允许您根据特定条件将格式应用于单元格或一系列单元格。

它将输入一系列单元格以及您应用于它们的相对格式标准 例如,你可以这样做:

worksheet.conditional_format('B3:K12', {'type': 'cell',
                                        'criteria': '>=',
                                        'value': 10,
                                        'format': format1})

您的代码返回此错误,因为您将列表作为第一个参数,但您应该使用类似上面示例的字符串 您可以查看其他示例documentation

答案 1 :(得分:1)

xl_rowcol_to_cell()来救援

请在下面找到代码:

str1_val = xl_rowcol_to_cell(row-len(line), 1, row_abs=True, col_abs=True)
str2_val = xl_rowcol_to_cell(row-1, 2, row_abs=True, col_abs=True)

    # Write a conditional format over a range.
    target_sheet.conditional_format('%s:%s' % (str1_val, str2_val), {'type': 'cell',
                                         'criteria': '>=',
                                         'value': 10,
                                         'format': format1})

# Write another conditional format over the same range.
    target_sheet.conditional_format('%s:%s' % (str1_val, str2_val), {'type': 'cell',
                                         'criteria': '<',
                                         'value': -0.1,
                                         'format': format2})

答案 2 :(得分:1)

实际上,关于条件格式的出色的xlsxwriter文档仅显示带有A1表示法的示例,例如:

worksheet.conditional_format('B1:B15', {'type': 'bottom', 'value': 10, 'criteria': '%', 'format':   format_red}) 

但是行列表示法也是可能的:

worksheet.conditional_format(1,2,15,2, {'type': 'top', 'value': 50, 'criteria': '%', 'format':   format_green}) 
# rowstart, colstart, rowend, colend

Excel中的结果: enter image description here

按照“ Working with Cell Notation”: 通常,在使用XlsxWriter模块时,可以在任何可以使用行列表示法的地方使用A1表示法。这也适用于采用一系列单元格的方法:

worksheet.merge_range(2, 1, 3, 3, 'Merged Cells', merge_format)
worksheet.merge_range('B3:D4',    'Merged Cells', merge_format)