使用python在单个Excel单元格中格式化单个字符

我在Python 2.7上使用Windows Vista操作系统上的xlrd,xlwt和xlutils。 我在Excel工作表中有一组长度为100个字符的DNA序列,每个序列在一个单元格中。 我试图突出显示在Excel中的每个这些序列中的特定位置的字符(加粗或改变颜色),但还没有find一种方法来格式化单元格内的单个字符。 据我所知,应用样式将其应用于整个单元格。 因此,我试图将序列分解成单独的组件,其中序列的某些部分将被样式修改,而其他部分则不会,然后将这些序列整理成单个单元格中的单个string。

码:


     rb = open_workbook('Mybook',formatting_info = True)
     rs = rb.sheet_by_index(0)
     wb = copy(rb)
     ws = wb.get_sheet(0)

     minus35style = xlwt.easyxf('font:bold 1')#style我只想要一个字符
    对于范围(0,368,1)中的b:
         rscellin = rs.cell(b,9)
         f = rscellin.value
         tominus35 = str(f [0:34])
         minus35 = str(f [35:36])
         ws.write(b,14,tominus35)
         ws.write(b,14,minus35,minus35style)
     wb.save( 'Mybook')

我的问题是添加样式会改变整个单元格,而我只想修改某些字符。 此外,后续写入同一个单元格会覆盖之前的内容。 有没有一种方法可以修改单个单元格中的单个字符,或将不同格式的文本添加到已有文本的现有单元格中?

请让我知道,如果你需要额外的信息,我忽略了。 我提前感谢你的时间。

布雷特

xlwt最新版本包括在单元格中使用Rich Text的function。 在通常情况下,您可以使用ws.write ,而不是使用ws.write_rich_text 。 前两个参数是像往常一样的行索引和列索引; 但下一个参数是一系列组件。 每个组件可以是“裸”文本值或(文本,字体)对。 裸体文本值将使用单元格整体样式中的字体,可以使用可选的第四个参数指定该字体。

对于(文本,字体)对,使用新的easyfontfunction来生成字体是最简单的,这与easyxf类似,但仅适用于字体。 这里是一个例子:

 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') 

你应该能够适应上述目的。 请注意,您仍然必须立即写入或覆盖整个单元格; 稍后您将无法返回并仅更新单元的一部分。