xlswriter formatting a range

2019-06-17 04:23发布

问题:

In xlswriter, once a format is defined, how can you apply it to a range and not to the whole column or the whole row?

for example:

perc_fmt = workbook.add_format({'num_format': '0.00%','align': 'center'})
worksheet.set_column('B:B', 10.00, perc_fmt)

this gets applied it to the whole "B" column, but how can this "perc_fmt" applied to a range, for example, if I do:

range2 = "B2:C15"
worksheet2.write(range2, perc_fmt)

it says:

TypeError: Unsupported type <class 'xlsxwriter.format.Format'> in write()

回答1:

Actually I found a workaround that avoids doing the loop. You just need to use the conditional formatting (that takes a range as an input) and just format all cases. For example:

worksheet2.conditional_format(color_range2, {'type': 'cell',
                                     'criteria': '>=',
                                     'value': 0, 'format': perc_fmt})
worksheet2.conditional_format(color_range2, {'type': 'cell',
                                     'criteria': '<',
                                     'value': 0, 'format': perc_fmt})  


回答2:

In xlswriter, once a format is defined, how can you apply it to a range and not to the whole column or the whole row?

There isn't a helper function to do this. You will need to loop over the range and apply the data and formatting to each cell.