2013-01-04 4 views
6

Windows Vista OSでxlrd、xlwt、およびxlutilsをPython 2.7で使用しています。私は100文字の長さのExcelシートを1枚のセルに配列した一連のDNA配列を持っています。私はこれらのシーケンスのそれぞれの特定の位置の文字をExcelで強調表示しようとしていますが、セル内の個々の文字を書式設定する方法はありませんでした。スタイルを適用すると、セル全体に私の知識が反映されます。したがって、シーケンスをシーケンスで分割し、シーケンスの一部がスタイルで修正され、他のシーケンスでは変更されないようにしてから、これらをまとめて単一のセル内の単一の文字列にすることを試みています。Pythonを使用した単一の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') 

私の問題は、スタイルを追加すると、セル全体を変えることで、私は特定の文字を変更することにしたいです。さらに、同じセルへの後続の書き込みは、以前にそこにあったものを上書きします。単一のセル内の個々の文字を変更する方法、または既にテキストが入っている既存のセルに書式付きテキストを別々に追加する方法はありますか?

私が見落とした追加情報が必要な場合はお知らせください。私はあなたの時間を前もって感謝します。 xlwt

ブレット

答えて

9

最近のバージョンでは、細胞内でリッチテキストを使用する機能が含まれます。通常はws.writeを使用する場合は、代わりにws.write_rich_textを使用してください。最初の2つのパラメータは、通常どおり行インデックスと列インデックスです。次のパラメータは一連のコンポーネントです。各コンポーネントは、「裸の」テキスト値または(テキスト、フォント)のペアのいずれかです。裸のテキスト値は、セルの全体的なスタイルのフォントを使用します。これはオプションの第4パラメータを使用して指定できます。

(テキスト、フォント)のペアについては、新しい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') 

あなたはあなたの目的のために上記を適応できるはずです。セル全体を一度に書き込んだり上書きしたりする必要があることに注意してください。後でセルの一部だけを後で更新することはできません。

+0

John Y、これはまさに私が探していたものです。それを実装し、それは魅力のように働いた。あなたの専門知識に感謝します。乾杯! –

関連する問題