sanjoe 发表于 2020-10-10 15:15:07

提取XLS的字体颜色

问一下各位:

        有什么工具可以提取XLS的字体颜色么?   能附上一段实例代码让小弟参考一下,那是极好的

疾风怪盗 发表于 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
            bgx = xf.background.pattern_colour_index
            print( bgx)

疾风怪盗 发表于 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) #获取表格 填充色 颜色

sanjoe 发表于 2020-10-10 15:44:46

疾风怪盗 发表于 2020-10-10 15:33
但是如果用openpyxl更方便,得出的是十六进制的格式

openpyxl   昨天我研究的时候遇到一个问题。 原来的XLS文件 我转成XLSX之后,单元格的值什么都能读到。 但是font.color.rgb是‘None’了。 然后 我重新再XLSX里 给字体上一遍颜色就可以读到了。 现在主要原文件都是XLS,所以比较麻烦。

疾风怪盗 发表于 2020-10-10 15:45:42

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

那就用xlrd试试了

sanjoe 发表于 2020-10-10 15:47:40

疾风怪盗 发表于 2020-10-10 15:45
那就用xlrd试试了

大佬有实例代码 指导指导么? XLRD 我也研究了 没找到 COLOR 这个属性 。 已经研究了一天了,哈哈

疾风怪盗 发表于 2020-10-10 15:49:45

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

2楼的回帖里不是代码么?我也是网上找的,测试了下,应该是对的,不过要换算下颜色值

sanjoe 发表于 2020-10-10 19:21:51

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

疾风怪盗 发表于 2020-10-10 19:24:55

sanjoe 发表于 2020-10-10 19:21


?你的回帖没任何内容?

sanjoe 发表于 2020-10-10 19:31:35

疾风怪盗 发表于 2020-10-10 19:24
?你的回帖没任何内容?

哦   我在找XLRD字体颜色的函数   可能刚才没发出去哈哈   您发那段代码是取背景色的吧 应该    background

疾风怪盗 发表于 2020-10-10 19:37:10

本帖最后由 疾风怪盗 于 2020-10-10 19:40 编辑

sanjoe 发表于 2020-10-10 19:31
哦   我在找XLRD字体颜色的函数   可能刚才没发出去哈哈   您发那段代码是取背景色的吧 应该    back ...

。。。。好像是背景色

sanjoe 发表于 2020-10-10 19:42:52

疾风怪盗 发表于 2020-10-10 19:37
。。。。好像是背景色

我还在寻找,哈哈

疾风怪盗 发表于 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
      cell_font = xlrd_wb.font_list
      print(cell_font.colour_index)

疾风怪盗 发表于 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

      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]
查看完整版本: 提取XLS的字体颜色