7

Python2.7を搭載したWindowsVistaOSでxlrd、xlwt、およびxlutilsを使用しています。Excelワークシートに100文字の長さのDNAシーケンスのセットがあり、各シーケンスは1つのセルにあります。これらの各シーケンス内の特定の位置にある文字をExcelで強調表示しようとしています(太字にするか、色を変更します)が、セル内の個々の文字をフォーマットする方法が見つかりません。スタイルを適用すると、私の知る限り、セル全体にスタイルが適用されます。したがって、シーケンスを個々のコンポーネントに分割し、シーケンスの一部がスタイルで変更され、他の部分は変更されないようにし、これらを1つのセル内の1つの文字列にまとめようとしています。

コード:

    rb = open_workbook('Mybook'、formatting_info = True)
    rs = rb.sheet_by_index(0)
    wb = copy(rb)
    ws = wb.get_sheet(0)

    マイナス35style=xlwt.easyxf('font:bold 1')#1文字だけにしたいスタイル
    range(0、368、1)のbの場合:
        rscellin = rs.cell(b、9)
        f = rscellin.value
        tominus35 = str(f [0:34])
        マイナス35=str(f [35:36])
        ws.write(b、14、tominus35)
        ws.write(b、14、マイナス35、マイナス35スタイル)
    wb.save('Mybook')

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

私が見落としている追加情報が必要な場合はお知らせください。よろしくお願いします。

ブレット

4

1 に答える 1

11

の最近のバージョンにxlwtは、セル内でリッチテキストを使用する機能が含まれています。通常使用する場合は、代わりにを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')

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

于 2013-01-09T23:30:46.513 に答える