programing

.xlsx에서 셀 색상 가져오기

oldcodes 2023. 10. 26. 21:39
반응형

.xlsx에서 셀 색상 가져오기

저는 openpyxl을 사용하여 엑셀 파일을 읽고 있습니다.저는 "xlsx" 파일에서 셀 색상을 받고 싶습니다.색상을 구하려고 했습니다.

wb = load_workbook('Test.xlsx', data_only=True)
sh = wb[Sheet1]
sh['A1'].fill.start_color.index #Green Color

"11L"을 받는데 RGB 색상을 구해야 하는데 어떻게 해야 하나요?

시트에 내장된 컬러 인덱스를 사용한 것 같습니다.이들에 대한 매핑은 다음의 출처에 있습니다.

COLOR_INDEX = (
    '00000000', '00FFFFFF', '00FF0000', '0000FF00', '000000FF', #0-4
    '00FFFF00', '00FF00FF', '0000FFFF', '00000000', '00FFFFFF', #5-9
    '00FF0000', '0000FF00', '000000FF', '00FFFF00', '00FF00FF', #10-14
    '0000FFFF', '00800000', '00008000', '00000080', '00808000', #15-19
    '00800080', '00008080', '00C0C0C0', '00808080', '009999FF', #20-24
    '00993366', '00FFFFCC', '00CCFFFF', '00660066', '00FF8080', #25-29
    '000066CC', '00CCCCFF', '00000080', '00FF00FF', '00FFFF00', #30-34
    '0000FFFF', '00800080', '00800000', '00008080', '000000FF', #35-39
    '0000CCFF', '00CCFFFF', '00CCFFCC', '00FFFF99', '0099CCFF', #40-44
    '00FF99CC', '00CC99FF', '00FFCC99', '003366FF', '0033CCCC', #45-49
    '0099CC00', '00FFCC00', '00FF9900', '00FF6600', '00666699', #50-54
    '00969696', '00003366', '00339966', '00003300', '00333300', #55-59
    '00993300', '00993366', '00333399', '00333333', 'System Foreground', 'System Background' #60-64
)

11L는 0000에 해당합니다.RGB 튜플이 녹색(0,255,0)일 FF00(16진수).

감방에서 색깔을 얻었으니,

wb = load_workbook('Test.xlsx', data_only=True)
sh = wb[Sheet1]
i=sh['A1'].fill.start_color.index #Green Color
Colors=styles.colors.COLOR_INDEX
result = str(Coloros[i])
result= "#"+result[2:]

여기에 대한 해결책이 있습니다.xlsx파일사용openpyxl도서관.A2우리가 알아내야 할 색 코드가 있는 세포입니다.

import openpyxl
from openpyxl import load_workbook
excel_file = 'color_codes.xlsx' 
wb = load_workbook(excel_file, data_only = True)
sh = wb['Sheet1']
color_in_hex = sh['A2'].fill.start_color.index # this gives you Hexadecimal value of the color
print ('HEX =',color_in_hex) 
print('RGB =', tuple(int(color_in_hex[i:i+2], 16) for i in (0, 2, 4))) # Color in RGB

와 함께openpyxl==3.0.7육각색은 다음을 통해 얻을 수 있습니다.

val = int(_cell.fill.start_color.index, 16)
hex_color = "%06x" % (val && 0xFFFFFF)

Summit Pokhrel의 해결책이 저에게 거의 효과가 있었습니다.마지막 줄을 다음 줄로 바꿔야 했습니다.

print('RGB =', tuple(int(color_in_hex[i:i+2], 16) for i in (2, 4, 6))) # Color in RGB  

언급URL : https://stackoverflow.com/questions/32736419/get-cell-color-from-xlsx

반응형