提取XLS的字体颜色
问一下各位:有什么工具可以提取XLS的字体颜色么? 能附上一段实例代码让小弟参考一下,那是极好的 网上找了一段,这个样貌似可以
import xlrd
book = xlrd.open_workbook("test.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
bgx = xf.background.pattern_colour_index
print( bgx)
但是如果用openpyxl更方便,得出的是十六进制的格式
import openpyxl
wb = openpyxl.load_workbook("test01.xlsx")
sheet = wb.active
print(sheet['A3'].font.color.rgb) # 获取 表格内字体颜色
print(sheet['A4'].fill.fgColor.rgb) #获取表格 填充色 颜色 疾风怪盗 发表于 2020-10-10 15:33
但是如果用openpyxl更方便,得出的是十六进制的格式
openpyxl 昨天我研究的时候遇到一个问题。 原来的XLS文件 我转成XLSX之后,单元格的值什么都能读到。 但是font.color.rgb是‘None’了。 然后 我重新再XLSX里 给字体上一遍颜色就可以读到了。 现在主要原文件都是XLS,所以比较麻烦。 sanjoe 发表于 2020-10-10 15:44
openpyxl 昨天我研究的时候遇到一个问题。 原来的XLS文件 我转成XLSX之后,单元格的值什么都能读到。...
那就用xlrd试试了 疾风怪盗 发表于 2020-10-10 15:45
那就用xlrd试试了
大佬有实例代码 指导指导么? XLRD 我也研究了 没找到 COLOR 这个属性 。 已经研究了一天了,哈哈 sanjoe 发表于 2020-10-10 15:47
大佬有实例代码 指导指导么? XLRD 我也研究了 没找到 COLOR 这个属性 。 已经研究了一天了,哈哈
2楼的回帖里不是代码么?我也是网上找的,测试了下,应该是对的,不过要换算下颜色值 疾风怪盗 发表于 2020-10-10 15:49
2楼的回帖里不是代码么?我也是网上找的,测试了下,应该是对的,不过要换算下颜色值
sanjoe 发表于 2020-10-10 19:21
?你的回帖没任何内容? 疾风怪盗 发表于 2020-10-10 19:24
?你的回帖没任何内容?
哦 我在找XLRD字体颜色的函数 可能刚才没发出去哈哈 您发那段代码是取背景色的吧 应该 background 本帖最后由 疾风怪盗 于 2020-10-10 19:40 编辑
sanjoe 发表于 2020-10-10 19:31
哦 我在找XLRD字体颜色的函数 可能刚才没发出去哈哈 您发那段代码是取背景色的吧 应该 back ...
。。。。好像是背景色 疾风怪盗 发表于 2020-10-10 19:37
。。。。好像是背景色
我还在寻找,哈哈 sanjoe 发表于 2020-10-10 19:42
我还在寻找,哈哈
这个好像是的,你自己看看吧,把两个合起来
import xlrd
xlrd_wb = xlrd.open_workbook("test.xls", formatting_info=True)
rd_ws = xlrd_wb.sheet_by_index(0)
for row in range(0, rd_ws.nrows):
for col in range(0, rd_ws.ncols):
rows = rd_ws.row_values(row)
rd_xf = xlrd_wb.xf_list
cell_font = xlrd_wb.font_list
print(cell_font.colour_index) 本帖最后由 疾风怪盗 于 2020-10-10 20:45 编辑
sanjoe 发表于 2020-10-10 19:42
我还在寻找,哈哈
这样应该可以了,就是还需要根据那个对照图,写一个对照表的代码出来,才能知道具体是什么颜色
这个文章讲的很详细:https://www.jianshu.com/p/5d496434ffcf
import xlrd
xlrd_wb = xlrd.open_workbook("test.xls", formatting_info=True)
rd_ws = xlrd_wb.sheet_by_index(0)
for row in range(0, rd_ws.nrows):
for col in range(0, rd_ws.ncols):
rd_xf = xlrd_wb.xf_list
cell_font = xlrd_wb.font_list.colour_index#获取单元格字体颜色值
print(f'第{row+1}行第{col+1}列的字体色:',cell_font)
cell_bgx = rd_xf.background.pattern_colour_index#获取单元格背景色值
print(f'第{row+1}行第{col+1}列的背景色:',cell_bgx)
页:
[1]