Выделите ячейку в Excel, используя Python - PullRequest
1 голос
/ 18 мая 2019

Я хочу выделить ячейку, используя python с этим кодом.

writer = pd.ExcelWriter('4.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')        
writer.save()

Num_cols = len (df10.TIME1)
print(Num_cols)
for k in range(0, Num_cols):
    a=0
    if df10["TIME1"][k]!=df10["TIME2"][k]:
        b=str(k)
        a='E'+b
        print(a)
        print(df10["TIME1"][k],df10["TIME2"][k])
        writer = pd.ExcelWriter('4.xlsx', engine='xlsxwriter')
        df10.to_excel(writer, sheet_name='Sheet1')
        workbook  = writer.book
        worksheet = writer.sheets['Sheet1']
        worksheet.conditional_format(a, {'type': '2_color_scale'})
        writer.save()

Но он не работал с этим кодом. Если я использую эту строку

worksheet.conditional_format('E3', {'type': '2_color_scale'})

вместоэта строка. E3 выделена.

worksheet.conditional_format(a, {'type': '2_color_scale'}) 

Мой номер ячейки является переменным.Я также попытался определить значение «a», например, a="'"+a+"'", но я получаю такую ​​ошибку AttributeError: 'NoneType' object has no attribute 'group'

Спасибо за ваш ответ.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Метод conditional_format() принимает диапазон в качестве входных данных.Если вы хотите применить его к одной ячейке, скопируйте ячейку в такой диапазон:

conditional_format('E3:E3', options)

Однако лучше использовать числовой диапазон, например:

conditional_format(2, 4, 2, 4, options)

См. Документы по conditional_format () и Работа с условным форматированием .

0 голосов
/ 18 мая 2019

Я немного изменил ваш код, и теперь он работает:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint (0,9,(5,5)))

writer = pd.ExcelWriter('4.xlsx', engine='xlsxwriter')
workbook  = writer.book
df.to_excel(writer, sheet_name='Sheet1')
worksheet = writer.sheets['Sheet1'] # select sheet here

Num_cols = 5
print(Num_cols)
for k in range(0, Num_cols):
    a=0
    if df[0][k]!=df[1][k]:
        b=str(k+2) # added shift for header
        a='E'+b
        print(a)
        print(df[0][k],df[1][k])
        worksheet.conditional_format(a, {'type': '2_color_scale'})
writer.save()

Может возникнуть ошибка AttributeError, если адрес использует строчные буквы или другие проблемы с форматированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...