Xlsx Writer:在单个单元格中写入多种格式的字符串

Man*_*noj 2 python excel xlsx python-2.7 xlsxwriter

我有一个带有多个分号的字符串。

'firstline: abc \n secondline: bcd \n thirdline: efg'
Run Code Online (Sandbox Code Playgroud)

我想使用 Xlsx Writer 在 excel 单元格中编写此字符串,如下所示。

第一行:abc
第二行:bcd
第三行:efg

这就是我所做的。

description_combined = 
    '''
    firstline: abc
    secondline: bcd
    thirdline: efg
    '''
    spanInserted = []
    spanInserted = description_combined.split("\n")
    result = ''

    for spans in spanInserted:
        strr1 =  '{}:'.format(spans.split(":")[0])
        strr2 = spans.split(":")[1]
        result += '''bold , "{}" , "{}" ,'''.format(str(strr1),str(strr2))

    result = result[:-1]
    # print result

    worksheet.write_rich_string('A1', result)  
Run Code Online (Sandbox Code Playgroud)


这是我在excel单元格中得到的结果:

粗体,“第一行:”,“abc”,粗体,“第二行:”,“bcd”,粗体,“第三行:”,“efg”

jmc*_*ara 6

write_string()方法将列表作为参数,但您正在传递一个字符串。

你应该使用这样的东西来传递你的字符串和格式列表:

result = [bold, 'firstline: ',  'abc',
          bold, 'secondline: ', 'bcd',
          bold, 'thirdline: ',  'efg']

worksheet.write_rich_string('A1', *result)
Run Code Online (Sandbox Code Playgroud)

但是,如果您还希望文本被text_wrap换行,则需要在列表末尾添加单元格格式,并在希望发生换行的位置添加换行符。像这样的东西:

import xlsxwriter

workbook = xlsxwriter.Workbook('rich_strings.xlsx')
worksheet = workbook.add_worksheet()

worksheet.set_column('A:A', 20)
worksheet.set_row(0, 60)

bold = workbook.add_format({'bold': True})
text_wrap = workbook.add_format({'text_wrap': True, 'valign': 'top'})

result = [bold, 'firstline: ',  'abc\n',
          bold, 'secondline: ', 'bcd\n',
          bold, 'thirdline: ',  'efg']

result.append(text_wrap)

worksheet.write_rich_string('A1', *result)

workbook.close()
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明