2017-08-30 2 views
0

openpyxlを学び始めました。私は、最大値を見つける方法、セルの太字を太字にする、数式を適用する方法などを学んだ。今、問題に直面している。私は10枚のワークシートを含むファイルを持っています。これらの10枚のシートでは、まず4枚を取り出す必要があります。次に、各列で最大値を見つけて太字にしなければなりません。私はコードを書いたが、完全には動作しません。時には正しく動作することもあれば、正しく動作しないこともあります。Excelシートの列の最大値を見つけて太字にして強調表示します - openpyxl

Here is the Linkと入力と出力ファイルをサンプリングします。ここで

は、コードは次のとおりです。

import os 
from openpyxl.formatting import Rule 
from openpyxl.styles import Font, PatternFill, Border 
from openpyxl.styles.differential import DifferentialStyle 
import shutil 
shutil.copy('../test.xlsx', 'test.xlsx') 

def bold_max_columnValue(file): 
    wb = load_workbook(file) 
    for ws in wb.worksheets: 

    if ws.title in ['Accuracy', 'Precision', 'Recall', 'F1-Measure']: 

     dxf = DifferentialStyle(font=Font(bold=True)) 
     range_cell = 'C5:C10' 
     rule = Rule(type='cellIs', dxf=dxf, formula=["=MAX("+ range_cell +")"]) 
     ws.conditional_formatting.add(range_cell, rule) 

     range_cell = 'D5:D10' 
     rule = Rule(type='cellIs', dxf=dxf, formula=["=MAX("+ range_cell +")"]) 
     ws.conditional_formatting.add(range_cell, rule) 

     range_cell = 'E5:E10' 
     rule = Rule(type='cellIs', dxf=dxf, formula=["=MAX("+ range_cell +")"]) 
     ws.conditional_formatting.add(range_cell, rule) 

     range_cell = 'F5:F10' 
     rule = Rule(type='cellIs', dxf=dxf, formula=["=MAX("+ range_cell +")"]) 
     ws.conditional_formatting.add(range_cell, rule) 

     range_cell = 'G5:G10' 
     rule = Rule(type='cellIs', dxf=dxf, formula=["=MAX("+ range_cell +")"]) 
     ws.conditional_formatting.add(range_cell, rule) 

     range_cell = 'H5:H10' 
     rule = Rule(type='cellIs', dxf=dxf, formula=["=MAX("+ range_cell +")"]) 
     ws.conditional_formatting.add(range_cell, rule) 
    wb.save('output-test.xlsx') 


def iterate_files(): 
    for file in os.listdir('.'): 
    stop = file.split('.') 
    if stop[-1] in ['xlsx']: 
     print(file) 
     bold_max_columnValue(file) 

iterate_files() 
print('Script Completed') 

私はopenpyxlドキュメントを検討してきたが、それは私を助けていませんでした。

ありがとうございました。

+0

何が機能しないかについての詳細情報を提供する必要があります。条件付き書式を使用しているので、ルールの評価はExcelで処理されます。しかし、多くの繰り返しステップがあるコードを単純化することから始めることができます。 –

+0

2つの問題があります。 1.常にテーブルの最後の行を選択し太字で表示します。 2.複数の値を選択することがあります。 3.正しく動作しない場合があります(奇妙なこと) 入出力ファイル(https://drive.google.com/open?id=0BwBntjDiENh5X2VPTmlibHNoeVk)のスナップショットの[リンク]は ですコードの動作がやや受け入れられるようになると、後で繰り返すステップ) ありがとう@CharlieClark – Irfanullah

答えて

0

Excelでどのように私があなたを助けることができない条件付き書式を評価するかについて本当に尋ねています。 Excelからテンプレートを作成し、そこからフォーマットをリバースエンジニアリングする方が良いかもしれません。条件付き書式設定の規則は、しばしば直観に反します。

あなたは一つの値だけ含まれるように、あなたはトップ10のルールを使用することができますし、それを設定し、最高値を持つセルを強調表示したい場合:

<cfRule type="top10" dxfId="1" priority="1" percent="1" rank="1">

は、そうでなければ、私はあなたが絶対を使用する必要があるかもしれないと思うが条件付き形式の既定値は相対座標を使用するため、$A$1:$A$5となります。

関連する問題