使用python在单个Excel单元格中设置单个字符的格式



我在Windows Vista操作系统上使用xlrd, xlwt和xlutils与Python 2.7。我有一组DNA序列在一个excel工作表是100个字符长,在单个细胞中的每个序列。我试图在excel中的每个序列中突出显示特定位置的字符(粗体或更改颜色),但没有找到在单元格内格式化单个字符的方法。据我所知,应用样式会将其应用于整个单元格。因此,我试图将序列分解为单个组件,其中序列的某些部分将用样式修改,而其他部分则不会,然后将这些重新整理成单个单元格中的单个字符串。

代码:

<>之前rb = open_workbook('Mybook', formatting_info=True)Rs = rb.sheet_by_index(0)Wb = copy(rb)w = wb.get_sheet(0)Minus35style = xlwt。easyxf('font: bold 1') # style我只喜欢一个字符对于(0,368,1)范围内的b:Rscellin = rs.cell(b,9)F = rscellin.valueTominus35 = str(f[00:34])Minus35 = str(f[35:36])ws。写(b, 14, tominus35)ws。写(b, 14, minus35, minus35style)wb.save("Mybook")之前

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

如果你需要我遗漏的额外信息,请告诉我。我提前感谢你的时间。

Brett

xlwt的最新版本包括在单元格中使用富文本的能力。通常你会用ws.write,用ws.write_rich_text代替。像往常一样,前两个参数是行索引和列索引;但下一个参数是一个组件序列。每个组件既可以是"裸"文本值,也可以是(text, font)对。裸文本值将使用单元格整体样式中的字体,可以使用可选的第四个参数指定。

对于(text, font)对,使用新的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')

你应该能够根据你的目的调整上面的内容。请注意,您仍然必须立即写入或覆盖整个单元格;

最新更新