Search code examples
pythonformattingconditional-statementsxlrdxlwt

Conditional Formatting xlwt


I have seen some posts that say you can NOT perform conditional formatting using xlwt, but they were rather old. I was curious if this has evolved?

I have been searching for about half a day now. Furthermore, if I con't write it directly from xlwt, can I create an .xls file containing a single cell with the conditional format I want and have xlrd read that format and paste it into the sheet I aim to produce then using xlwt?


Solution

  • xlrd and xlwt still don't support conditional formatting. xlrd doesn't read it, xlwt doesn't write it.

    There is a new and awesome module, called xlsxwriter. It does support conditional formatting out of the box. The project is active, documentation is pretty good. Plus, there are a lot of examples.

    Here's an example:

    from xlsxwriter.workbook import Workbook
    
    workbook = Workbook('test.xlsx')
    worksheet = workbook.add_worksheet()
    
    worksheet.write('A1', 49)
    worksheet.write('A2', 51)
    
    format1 = workbook.add_format({'bold': 1, 'italic': 1})
    worksheet.conditional_format('A1:A2', {'type': 'cell',
                                           'criteria': '>=',
                                           'value': 50,
                                           'format': format1})
    workbook.close()