Format individual characters in a single Excel cell with python

前端 未结 1 1134
梦如初夏
梦如初夏 2020-12-10 17:10

I am using xlrd, xlwt, and xlutils on the Windows Vista OS with Python 2.7. I have a set of DNA sequences in an excel worksheet that are 100 characters long, with each sequ

1条回答
  •  南方客
    南方客 (楼主)
    2020-12-10 17:46

    Recent versions of xlwt include the ability to use Rich Text within a cell. Where normally you would use ws.write, use ws.write_rich_text instead. The first two parameters are the row index and column index, as usual; but the next parameter is a sequence of components. Each component can either be a "naked" text value or a (text, font) pair. The naked text values will use the font from the cell's overall style, which can be specified using the optional fourth parameter.

    For the (text, font) pairs, it is simplest to generate fonts using the new easyfont feature, which is kind of like easyxf but only for fonts. Here is an example:

    import xlwt
    
    wb = xlwt.Workbook()
    ws = wb.add_sheet('Sheet1')
    
    font0 = xlwt.easyfont('')
    font1 = xlwt.easyfont('bold true')
    font2 = xlwt.easyfont('color_index red')
    style = xlwt.easyxf('font: color_index blue')
    
    seg1 = ('bold', font1)
    seg2 = ('red', font2)
    seg3 = ('plain', font0)
    seg4 = ('boldagain', font1)
    
    ws.write_rich_text(2, 5, (seg1, seg2, seg3, seg4))
    ws.write_rich_text(4, 1, ('xyz', seg2, seg3, '123'), style)
    
    wb.save('rich_text.xls')
    

    You should be able to adapt the above for your purposes. Note that you still have to write or overwrite the whole cell at once; you can't go back and update only part of a cell later.

    0 讨论(0)
提交回复
热议问题