2016-03-30 213 views
0

私はopenpyxlを使用してMicrosoft Excelワークシートを操作しています。openpyxlで条件付き書式を適用するにはどうすればよいですか?

行番号が偶数の場合は行を塗りつぶす条件付き書式設定ルールを追加し、行番号が偶数ならば行を空白のままにします。

Excelでは、すべてのワークシートを選択して、=MOD(ROW();2)=0または=EVEN(ROW()) = ROW()のテキストで新しい書式設定ルールを作成します。

私は(例えば最初の10行を考慮して)次のコード行でこの動作を実装しようとした:

redFill = PatternFill(start_color='EE1111', end_color='EE1111', fill_type='solid') 
ws2.conditional_formatting.add('A1:A10', FormulaRule(formula=['MOD(ROW();2) = 0'], stopIfTrue=False, fill=redFill)) 

私のプログラムは、コンパイルし、正常に動作しますが、私は、出力のExcelファイルを開こうとするとファイルに読み取り不可能なコンテンツが含まれていることがわかり、ワークシートのコンテンツを復元するかどうかを尋ねます。 「はい」をクリックすると、ワークシートは正しいが、書式はありません。

このような書式をopenpyxl(おそらくワークシート全体)に適用する正しい方法は何ですか?

答えて

1

残念ながら、条件式で処理される方法は特に不透明です。最も適切なことは、該当する条件付き書式のファイルを作成し、関連ファイルを解凍して検査することです。ルールは、関連するワークシートファイルとスタイルファイルの形式に格納されます。

しかし、私は問題が単にあなたが ";"関数内のパラメータを区切るには、常にカンマを使用する必要があります。

私のプロジェクトの1からのサンプル式:

green_text = Font(color="006100") 
green_fill = PatternFill(bgColor="C6EFCE") 
dxf2 = DifferentialStyle(font=green_text, fill=green_fill) 
r3 = Rule(type="expression", dxf=dxf2) 
r3.formula = ["AND(ISNUMBER(C2), C2>=400)"] 
+0

';'私は、Excelの区切りの設定に依存すると思う:私の場合Excelの式は;区切り記号で、 '、'ではありません。 –

+0

区切りの設定はまったく異なるものです。このため、生成されたファイルのソースを参照する必要があります。 –

+0

生成されたファイルはどういう意味ですか? 私が言いたいのは、条件付き成立ルールは、私のExcelで。 –

関連する問題