#python #excel
#python #excel
Вопрос:
У меня есть требование, при котором я должен извлечь цвет ячейки (фоновой информации) файла Excel, я сделал это на perl, но мне это нужно на python.
Может ли кто-нибудь помочь мне в этом.
Ответ №1:
Использование xlrd
:
from xlrd import open_workbook
from webcolors import rgb_to_name
wb = open_workbook('cel_lis.xls', formatting_info=True)
sh = wb.sheet_by_name('Sheet1')
def getBGColor(book, sheet, row, col):
xfx = sheet.cell_xf_index(row, col)
xf = book.xf_list[xfx]
bgx = xf.background.pattern_colour_index
pattern_colour = book.colour_map[bgx]
#Actually, despite the name, the background colour is not the background colour.
#background_colour_index = xf.background.background_colour_index
#background_colour = book.colour_map[background_colour_index]
return pattern_colour
rgb_Col = getBGColor(wb, sh, 0, 0)
print("The RGB value of the cell is: {} which is equivalent to {}".format(rgb_Col, rgb_to_name(rgb_Col)))
ВЫВОД:
The RGB value of the cell is: (255, 0, 0) which is equivalent to red
Примечание:
Я использовал рабочий лист типа
.xls
с именемcel_lis.xls
, в котором его лист вызываетсяSheet1
с первой ячейкойA
, которая имеетRed
цвет фона.
Комментарии:
1. Во-первых, спасибо за решение, но как получить информацию о целом столбце с несколькими различными цветами
2. @SaptarshiBaisya
rgb_Col = getBGColor(wb, sh, 0, 0)
последнее значение представляет значение col, при его увеличении будет получен следующий столбец!
Ответ №2:
Вы можете использовать библиотеку openpyxl для чтения и получения требуемых данных из файла Excel. Вот ссылка для получения цветных стилей Openpyxl
Вы можете использовать этот пример кода как
import openpyxl
wb = openpyxl.load_workbook('#filename', data_only=True)
sh = wb[Sheet1]
sh['A1'].fill.start_color.index