我试图以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!
答案 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
按照“ 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)