2017-06-23 33 views
1

私はまだ比較的新しいPythonですが、しばらくこのままで遊んでいて、周りを頭で囲むことはできません。openpyxl条件付き書式でプレースホルダを使用するにはどうすればよいですか?

Openpyxlを使用してスプレッドシートにデータを返すクエリがあり、そのスプレッドシートを条件付きでフォーマットしたいとします。正確な行数を入力するとできますが、行の数はクエリによって異なるため、行数を条件付きでしか取得できないため、プレースホルダが必要です下記をご覧ください。私は、行の数を返す変数num_of_rowsを使用します。私が言いたい:

ws.conditional_formatting.add(('H3:H%d', CellIsRule(operator='lessThan', formula=['10'], 
           stopIfTrue=True, fill=red_fill)) % (num_of_rows,)) 

をしかし、私はこのエラーを取得する:私は数に%num_of_rows変数を変更

ws.conditional_formatting.add(('H3:H%d', 
CellIsRule(operator='lessThan', formula=['10'], stopIfTrue=True, 
fill=red_fill)) % (15,)) 
TypeError: unsupported operand type(s) for %: 'tuple' and 'tuple' 

たとしても、それは同じエラーを返し、15を言います。ここでプレースホルダを使用するにはどうすればよいですか?

答えて

1

は、このコードを試してみてください代わりに

ws.conditional_formatting.add(('H3:H%d' % (num_of_rows,), CellIsRule(operator='lessThan', formula=['10'], stopIfTrue=True, fill=red_fill)))

の理由は、あなたが右の文字列の後%演算子を使用する必要がなく、代わりにあなたがws.conditional_formatting.add()機能にそれを使用しようとしているです。

+0

D'oh!私がそれを投稿した直後にそれを分かりました、そして、それは私がそれを働かせるためにしたものです。本当にありがとう! – Emac

+0

FWIW '.format()'メソッドの文字列の使用は、 'printf'の書式よりも優先されます。 –

関連する問題