2016-09-08 13 views
2

複数のセミコロンを含む文字列があります。Xlsx Writer:1つのセルに複数の書式の文字列を書き込む

'firstline: abc \n secondline: bcd \n thirdline: efg' 

この文字列は、以下のようにXlsx Writerを使用してExcelセルに書きたいと考えています。

ファーストライン:ABC
secondline
thirdline 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) 


これは私がExcelのセルに入った結果である:

太字、 "ファーストライン:"、 "ABC"、太字、 "secondline:"、 "BCD"、太字、 "第3行: "、" efg "

+0

ご希望の1行または3行? – Giordano

+0

@Giordano私は、単一の文字列の分割を使って動的な行を求めていました。回答はjmcnamaraが働いた。 – Manoj

+0

Ok @Manoj、私はダイナミックなソリューションを投稿しました。私は参考になることを願っています。 – Giordano

答えて

2

jmcnamaraのソリューションはうまくいきます。私は同様の可能な解決策を掲示しましたが、動的でした。

import xlsxwriter 
workbook = xlsxwriter.Workbook("<your path>") 
worksheet = workbook.add_worksheet() 
# add style for first column 
cell_format = workbook.add_format({'bold': True}) 
text_wrap = workbook.add_format({'text_wrap': True, 'valign': 'top'}) 
data = [] 
description_combined = 'firstline: abc \n secondline: bcd \n thirdline: efg' 
# prepare list of list 
for item in description_combined.split("\n"): 
    data.append(cell_format) 
    data.append(item.split(":")[0].strip() + ":") 
    data.append(item.split(":")[1] + "\n") 

# write data in one single cell 
data.append(text_wrap) 

worksheet.write_rich_string('A1', *data) 

workbook.close() 

は、私はそれが write_string()メソッドは、引数としてリストを取るが、あなたは、文字列を渡している

2

役に立つことを願っています。

あなたは、文字列とフォーマットのリストを渡すために、このようなものを使用する必要があります。

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

worksheet.write_rich_string('A1', *result) 

しかし、あなたはまた、テキストをラップする場合は、あなたがの終わりに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() 

出力:

enter image description here

関連する問題