Как изменить цвет ячейки Excel в соответствии со значением? - PullRequest
1 голос
/ 21 марта 2019

Так что в принципе моя идея довольно проста.У меня есть файл Excel, где у меня есть столбец (D), и я хочу проверить каждую строку на длину столбца (кроме первого, это имя).Если значение больше 0, ячейка должна быть зеленой, если она меньше 0, тогда она должна быть красной, а 0 серым.Я знаю, что это возможно с помощью цикла, но я не знаю, как, и я не могу найти хорошую информацию о том, как подойти к этому ...

Так что я уже получил это:

import win32com.client as win32
import pythoncom

    pythoncom.CoInitialize()

    #Excel
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open('C:\\Users\\Gebruiker\\Downloads\\RELEARNING\\output.xlsx')
    ws = wb.Worksheets("Sheet1")
    ws.Cells(1,4).Value = "Coin Toss Results"  #This is Row D
    ws.Columns.AutoFit()
    wb.Save()
    excel.Application.Quit() 

Какой самый эффективный подход для этого?

Спасибо за ответ заранее,

Ян

PS: OpenPyXL помечен, потому что я думаю, что win32com используетте же команды, что и openpyxl, если я не ошибаюсь, иначе удалите тег ...

1 Ответ

0 голосов
/ 08 апреля 2019

Вот пример кода, который должен работать до тех пор, пока вы не вставите до wb.Save(), обратите внимание, что мы использовали функцию из здесь :

for i in range(2,5):   # Assuming there is Cell(D2)=1, Cell(D3)=0, Cell(D4)=-1
    cell = ws.Cells(i,4)
    if cell.Value < 0:
        cell.Interior.Color = rgbToInt((255,0,0)) # red
    elif cell.Value == 0:
        cell.Interior.Color = rgbToInt((211,211,211)) # grey
    elif cell.Value > 0:
        cell.Interior.Color = rgbToInt((0,255,0)) # green
    else:
        print('Error.')
...