반응형
팬더 read_excel에서 Excel 셀 배경색을 얻으시겠습니까?
나는 있습니다..xls
배경색 셀이 있는 Excel 파일입니다.나는 그 파일을 판다들에게 읽어주고 있습니다.read_excel
세포의 배경색을 얻을 수 있는 방법이 있습니까?
위에서 제안한 솔루션은 다음과 같은 경우에만 작동합니다.xls
파일, 대상이 아님xlsx
파일입니다. 이것은 문제를 제기합니다.NotImplementedError: formatting_info=True not yet implemented
.Xlrd
라이브러리가 아직 작업에 업데이트되지 않았습니다.xlsx
파일. 그래서 당신은 해야 합니다.Save As
사용자에게 맞지 않을 수도 있는 형식을 매번 변경합니다.
다음에 대한 솔루션이 있습니다.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
마크의 제안에 따라 강제로 통과시킵니다.
from xlrd import open_workbook
wb = open_workbook('wb.xls', formatting_info=True)
sheet = wb.sheet_by_name("mysheet")
#create empy colormask matrix
bgcol=np.zeros([sheet.nrows,sheet.ncols])
#cycle through all cells to get colors
for row in range(sheet.nrows):
for column in range(sheet.ncols):
cell = sheet.cell(row, column)
fmt = wb.xf_list[cell.xf_index]
bgcol[row,column]=fmt.background.background_colour_index
#return pandas mask of colors
colormask=pd.DataFrame(bgcol)
하지만 판다를 직접 통과할 수 있는 더 좋은 방법이 있을 것입니다.
Sumit의 답변을 개선하면(내 생각에는 받아들여져야 할 답변), 목록 이해를 사용하여 전체 열의 색상을 얻을 수 있습니다.
import openpyxl
from openpyxl import load_workbook
excel_file = 'my_file.xlsx'
wb = load_workbook(excel_file, data_only = True)
sh = wb['my_sheet']
# extract color from column A.
color_in_hex = [cell.fill.start_color.index for cell in sh['A:A']]
저는 이 링크를 기반으로 위의 @csaladenes의 응답에서 코드 스니펫을 편집했고, 그것은 제 xls 파일에서 작동합니다(원래는 배경색은 다르지만 모든 셀이 동일한 색 색인을 표시하도록 했습니다).
import xlrd
import numpy as np
wb = xlrd.open_workbook(file, formatting_info=True)
sheet = wb.sheet_by_name("mysheet")
bgcol=np.zeros([sheet.nrows,sheet.ncols])
for row in range(sheet.nrows):
for col in range(sheet.ncols):
c = sheet.cell(row, col)
cif = sheet.cell_xf_index(row, col)
iif = wb.xf_list[cif]
cbg = iif.background.pattern_colour_index
bgcol[row,col] = cbg
언급URL : https://stackoverflow.com/questions/47857112/get-excel-cell-background-color-in-pandas-read-excel
반응형
'programing' 카테고리의 다른 글
Springboot : BeanDefinitionStore 예외:구성 클래스를 구문 분석하지 못했습니다. (0) | 2023.06.25 |
---|---|
트랜잭션 범위가 너무 일찍 완료됨 (0) | 2023.06.25 |
ipython에서 변수를 지우는 방법은 무엇입니까? (0) | 2023.06.25 |
LINQ에서 전체 텍스트 검색(FTS)을 사용할 수 있습니까? (0) | 2023.06.25 |
텍스트 날짜/시간을 Excel의 실제 날짜 시간으로 변환 (0) | 2023.06.25 |