鱼C论坛

 找回密码
 立即注册
查看: 1891|回复: 13

提取XLS的字体颜色

[复制链接]
发表于 2020-10-10 15:15:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问一下各位:

        有什么工具可以提取XLS的字体颜色么?   能附上一段实例代码让小弟参考一下,那是极好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-10 15:32:52 | 显示全部楼层
网上找了一段,这个样貌似可以
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[xfx]
            bgx = xf.background.pattern_colour_index
            print( bgx)
Cc296089_8c2179d9-3713-4e8a-aee5-9dee10071ed8.gif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:33:26 | 显示全部楼层
但是如果用openpyxl更方便,得出的是十六进制的格式
import openpyxl

wb = openpyxl.load_workbook("test01.xlsx")
sheet = wb.active

print(sheet['A3'].font.color.rgb) # 获取 表格内字体颜色
print(sheet['A4'].fill.fgColor.rgb) #获取表格 填充色 颜色
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:44:46 | 显示全部楼层
疾风怪盗 发表于 2020-10-10 15:33
但是如果用openpyxl更方便,得出的是十六进制的格式

openpyxl   昨天我研究的时候遇到一个问题。 原来的XLS文件 我转成XLSX之后,单元格的值什么都能读到。 但是font.color.rgb是‘None’了。 然后 我重新再XLSX里 给字体上一遍颜色  就可以读到了。 现在主要原文件都是XLS,所以比较麻烦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:45:42 | 显示全部楼层
sanjoe 发表于 2020-10-10 15:44
openpyxl   昨天我研究的时候遇到一个问题。 原来的XLS文件 我转成XLSX之后,单元格的值什么都能读到。  ...

那就用xlrd试试了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 15:47:40 | 显示全部楼层

大佬  有实例代码 指导指导么? XLRD 我也研究了 没找到 COLOR 这个属性 。 已经研究了一天了,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 15:49:45 | 显示全部楼层
sanjoe 发表于 2020-10-10 15:47
大佬  有实例代码 指导指导么? XLRD 我也研究了 没找到 COLOR 这个属性 。 已经研究了一天了,哈哈

2楼的回帖里不是代码么?我也是网上找的,测试了下,应该是对的,不过要换算下颜色值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 19:21:51 | 显示全部楼层
疾风怪盗 发表于 2020-10-10 15:49
2楼的回帖里不是代码么?我也是网上找的,测试了下,应该是对的,不过要换算下颜色值


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 19:24:55 | 显示全部楼层

?你的回帖没任何内容?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 19:31:35 | 显示全部楼层
疾风怪盗 发表于 2020-10-10 19:24
?你的回帖没任何内容?

哦   我在找XLRD字体颜色的函数   可能刚才没发出去  哈哈   您发那段代码  是取背景色的吧 应该    background
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 19:37:10 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-10-10 19:40 编辑
sanjoe 发表于 2020-10-10 19:31
哦   我在找XLRD字体颜色的函数   可能刚才没发出去  哈哈   您发那段代码  是取背景色的吧 应该    back ...


。。。。好像是背景色
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 19:42:52 | 显示全部楼层
疾风怪盗 发表于 2020-10-10 19:37
。。。。好像是背景色

我还在寻找,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 19:49:34 | 显示全部楼层
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[rd_ws.cell_xf_index(row, col)]
        cell_font = xlrd_wb.font_list[rd_xf.font_index]
        print(cell_font.colour_index)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 19:58:08 | 显示全部楼层
本帖最后由 疾风怪盗 于 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[rd_ws.cell_xf_index(row, col)]

        cell_font = xlrd_wb.font_list[rd_xf.font_index].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)
未命名图片.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 09:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表