与蟒蛇一个Excel单元格的格式单个字符(Format individual characters

2019-07-17 20:05发布

我使用xlrd,xlwt和xlutils在Windows Vista操作系统与Python 2.7。 我有一组在Excel工作表是100个字符长,在单个小区中的每个序列的DNA序列。 我想强调的在Excel中的每个这些序列的特定位置的字符(粗体他们或改变颜色),但还没有找到一种方法,在细胞内格式化单个字符。 将样式应用于据我所知,整个小区。 因此,我试图打破序列成若干部分,其中序列的某些部分将与风格,而另一些则不会,并再整理这些重新走到一起进入单个细胞一个字符串进行修改。

码:


    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 I'd like for just one character
    for b in range(0, 368, 1):
        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')

我的问题是,添加一种风格改变了整个细胞,而我只想某些字符进行修改。 此外,后续同一小区的覆盖写什么在那里以前。 是否有修改单个字符在一个单元格,或以不同格式的文本添加到已有的文本将现有电池的方法吗?

请让我知道你是否需要额外的信息,我已经忽视。 我很欣赏你的时间提前。

布雷特

Answer 1:

最近的版本xlwt包括对小区内使用富文本的功能。 而正常情况下,你会使用ws.write ,使用ws.write_rich_text代替。 前两个参数是行索引和列索引,像往常一样; 但下一个参数是一个组件的序列。 每个组件可以是“裸”文本值或(文本,字体)对。 裸文本值将使用的字体从小区的整体风格,可以使用可选的第四个参数中指定。

对于(文字,字体)对,这是最简单的生成使用新字体easyfont功能,这是一种像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')

您应该能够适应上述为您的目的。 请注意,您仍然需要编写或改写整个小区一次; 你不能回去,后来更新单元的一部分。



文章来源: Format individual characters in a single Excel cell with python