学习群里有人发了一个很有意思的习题出来,目的是,取出单元格内红色的答案,用了普通的方法,不太行,但是VBA里面是可以做到的,那么号称等于99%功能的xlwings 怎么才能读取一下的红色内容呢?
以下是我的方法,过了5天,也有同学用普适的xlwings代码写出来了,如果有需要,我们下次有机会再把代码拉出来
如题,我们该如何提取红色的字体,填写到答案这一列呢
很明显,答案为D李白 b陆游 c苏轼 A对
那么在xlwings 中我们应该怎么写?
如下:
我们要引入一个库
'''
pip install comtypes
'''
import xlwings as xw
import comtypes.client as ct #导入comtypes
wb = app.Workbooks.open(r'题库示例1.xlsx') # 打开文件
ws = wb.sheets['Sheet1'] # 选择工作表
# 跟我们平时取值的方法不一样,有点难受
# v = ws.Range('B2').value 这样写的话 得出<POINTER(Range) ptr=0x1977f383518 at 1970f44f9c0>
v = ws.Cells[2,2].Value[()]
# 取值后,我们len一下,得出单元格内有几个值
v_num = len(v)
# 把v_num 放进去就能打印出一个单元格内,就知道哪几个字是红色啦!(别问我为什么要+1)
for i in range(1,v_num +1 ):
print(ws.Range('B2').Characters(i,1).Font.Color)
如此我们就可以得到B2单元格内是红色的字符
以上是读取,那么反向,我们如何去修改指定字符
# 添加颜色
ws.Range('B2').Characters(1,3).Font.Color = 255
# 加粗、斜体
ws.range('B2').Characters(1,3).Font.Bold = True # 加粗
ws.range('B2').Characters(1,16).Font.Italic = True # 斜体