0
我已經開始學習openpyxl。我已經學會了如何找到最大值,使單元格的粗體值,應用公式等。現在,我面臨一個問題。我有Excel文件,其中包含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文檔,但它並沒有幫助我。
謝謝。
你應該提供更多關於不起作用的信息。在使用條件格式時,任何規則的評估均由Excel處理。然而,你可以從簡化你的代碼開始,這些代碼有很多重複的步驟。 –
有兩個問題。 1.它總是選擇並加粗表格的最後一行。 2.有時候,它會選擇多個值。 3.有時,它工作正常(奇怪) 這裏是[鏈接]輸入/輸出文件的快照(https://drive.google.com/open?id=0BwBntjDiENh5X2VPTmlibHNoeVk) (我打算刪除後面的重複步驟,當代碼開始工作時可以接受) 謝謝@CharlieClark – Irfanullah