鱼C论坛

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

提取XLS的字体颜色

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

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

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

x
问一下各位:

        有什么工具可以提取XLS的字体颜色么?   能附上一段实例代码让小弟参考一下,那是极好的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-10 15:32:52 | 显示全部楼层
网上找了一段,这个样貌似可以
  1. import xlrd
  2. book = xlrd.open_workbook("test.xls", formatting_info=True)
  3. sheets = book.sheet_names()
  4. print ("sheets are:", sheets)
  5. for index, sh in enumerate(sheets):
  6.     sheet = book.sheet_by_index(index)
  7.     print( "Sheet:", sheet.name)
  8.     rows, cols = sheet.nrows, sheet.ncols
  9.     print( "Number of rows: %s   Number of cols: %s" % (rows, cols))
  10.     for row in range(rows):
  11.         for col in range(cols):
  12.             print ("row, col is:", row+1, col+1,)
  13.             thecell = sheet.cell(row, col)
  14.             # could get 'dump', 'value', 'xf_index'
  15.             print( thecell.value,)
  16.             xfx = sheet.cell_xf_index(row, col)
  17.             xf = book.xf_list[xfx]
  18.             bgx = xf.background.pattern_colour_index
  19.             print( bgx)
复制代码

Cc296089_8c2179d9-3713-4e8a-aee5-9dee10071ed8.gif
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  4. print(sheet['A3'].font.color.rgb) # 获取 表格内字体颜色
  5. print(sheet['A4'].fill.fgColor.rgb) #获取表格 填充色 颜色
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

那就用xlrd试试了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

大佬  有实例代码 指导指导么? XLRD 我也研究了 没找到 COLOR 这个属性 。 已经研究了一天了,哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

2楼的回帖里不是代码么?我也是网上找的,测试了下,应该是对的,不过要换算下颜色值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

?你的回帖没任何内容?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

哦   我在找XLRD字体颜色的函数   可能刚才没发出去  哈哈   您发那段代码  是取背景色的吧 应该    background
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


。。。。好像是背景色
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我还在寻找,哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-10 19:49:34 | 显示全部楼层
sanjoe 发表于 2020-10-10 19:42
我还在寻找,哈哈

这个好像是的,你自己看看吧,把两个合起来
  1. import xlrd

  2. xlrd_wb = xlrd.open_workbook("test.xls", formatting_info=True)
  3. rd_ws = xlrd_wb.sheet_by_index(0)

  4. for row in range(0, rd_ws.nrows):
  5.     for col in range(0, rd_ws.ncols):
  6.         rows = rd_ws.row_values(row)
  7.         rd_xf = xlrd_wb.xf_list[rd_ws.cell_xf_index(row, col)]
  8.         cell_font = xlrd_wb.font_list[rd_xf.font_index]
  9.         print(cell_font.colour_index)
复制代码
小甲鱼最新课程 -> https://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

  1. import xlrd

  2. xlrd_wb = xlrd.open_workbook("test.xls", formatting_info=True)
  3. rd_ws = xlrd_wb.sheet_by_index(0)

  4. for row in range(0, rd_ws.nrows):
  5.     for col in range(0, rd_ws.ncols):
  6.         rd_xf = xlrd_wb.xf_list[rd_ws.cell_xf_index(row, col)]

  7.         cell_font = xlrd_wb.font_list[rd_xf.font_index].colour_index#获取单元格字体颜色值
  8.         print(f'第{row+1}行第{col+1}列的字体色:',cell_font)

  9.         cell_bgx = rd_xf.background.pattern_colour_index#获取单元格背景色值
  10.         print(f'第{row+1}行第{col+1}列的背景色:',cell_bgx)
复制代码

未命名图片.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 04:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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