Python 使用XLRD软件包识别Excel表格单元格颜色代码
我正在编写一个python脚本,用它从excel工作表中读取数据。工作表中很少有单元格用不同的颜色高亮显示,我想确定单元格的颜色代码。有办法吗?请举个例子。这里有一种处理方法:Python 使用XLRD软件包识别Excel表格单元格颜色代码,python,excel,xlrd,Python,Excel,Xlrd,我正在编写一个python脚本,用它从excel工作表中读取数据。工作表中很少有单元格用不同的颜色高亮显示,我想确定单元格的颜色代码。有办法吗?请举个例子。这里有一种处理方法: import xlrd book = xlrd.open_workbook("sample.xls", formatting_info=True) sheets = book.sheet_names() print "sheets are:", sheets for index, sh in enumerate(shee
import xlrd
book = xlrd.open_workbook("sample.xls", formatting_info=True)
sheets = book.sheet_names()
print "sheets are:", sheets
for index, sh in enumerate(sheets):
sheet = book.sheet_by_index(index)
print "Sheet:", sheet.name
rows, cols = sheet.nrows, sheet.ncols
print "Number of rows: %s Number of cols: %s" % (rows, cols)
for row in range(rows):
for col in range(cols):
print "row, col is:", row+1, col+1,
thecell = sheet.cell(row, col)
# could get 'dump', 'value', 'xf_index'
print thecell.value,
xfx = sheet.cell_xf_index(row, col)
xf = book.xf_list[xfx]
bgx = xf.background.pattern_colour_index
print bgx
有关的详细信息。此函数以元组形式返回单元格背景的rgb值。
JMax建议的解决方案仅适用于
xls
文件,而不适用于xlsx
文件。这会引发一个NotImplementedError:formatting\u info=True尚未实现
Xlrd
库仍未更新,无法用于xlsx
文件。因此,您必须另存为
,并每次更改可能不适合您的格式下面是一个使用
openpyxl
库的xlsx
文件解决方案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
脚本能够识别颜色代码。但现在我遇到了一个不同的问题。我正在分析的excel工作表有两个空单元格,没有任何额外的格式或颜色,也就是说,两个单元格在位置-(52,4)和(9,4)处都有白色背景,内部没有文本。在第一种情况下,颜色是64,另一种是9。两种相似类型的单元格的颜色代码有何不同?您确定没有一个
空白
和另一个无填充
?我终于能够区分单元格是否高亮显示。检查是通过查找单元格的颜色映射来完成的。下面是代码:book=xlrd.open\u工作簿(“sample.xls”,格式化信息=1)xfx=sheet.cell\u xf\u index(行、列)xf=book.xf\u list[xfx]bgx=xf.background.pattern\u color\u index color\u map=book.color\u map[bgx]如果color\u map和(color\u map[0]!=255或color\u map[1]!=255或color\u map[2]!=255):#工作表单元格高亮显示其他:#工作表单元格未高亮显示,因此,如果元组中的任何值均不为255,则表示该单元格高亮显示。这会在我处引发一个NotImplementedError
。可能是因为我打开了xlsx
而不是xls
:NotImplementedError:formatting\u info=True尚未实现
不幸的是,这只适用于“xls”文件,不适用于“xlsx”文件。有人对“XLSX”文件有任何解决方案吗?您将得到一个“NotImplementedError”。@Heinz我通过改变许多颜色对它进行了多个测试。效果很好。你能分享你的例子吗?
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