要求:
读取以下表格中所有字体为大红色或者单元格颜色为黄色的信息
利用到的模块是:openpyxl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import openpyxl filename = "colortest.xlsx" #读取excel workbook = openpyxl.load_workbook(filename) worksheet = workbook.get_sheet_by_name( "试题2" ) #读取sheet rows,cols = worksheet.max_row,worksheet.max_column yellow = [] red = [] for i in range ( 1 ,rows): for j in range ( 1 ,cols): ce = worksheet.cell(row = i,column = j) fill = ce.fill font = ce.font if fill.start_color.rgb = = "ffffff00" and ce.value! = none: yellow.append(ce.value) if font.color.rgb = = "ffff0000" : red.append(ce.value) print (yellow,red) |
结果:
补充:python操作excel和docx并控制文字的颜色及其他样式(通俗易懂)
1、excel
1
2
3
4
5
6
7
8
9
10
|
from xlsxwriter.workbook import workbook workbook = workbook(r 'test.xlsx' ) # 创建xlsx worksheet = workbook.add_worksheet( 'a' ) # 添加sheet red = workbook.add_format({ 'color' : 'red' }) # 颜色对象 worksheet.write( 0 , 0 , 'sentences' ) # 0,0表示row,column,sentences表示要写入的字符串 test_list = [ "我爱" , "中国" , "天安门" ] test_list.insert( 1 , red) # 将颜色对象放入需要设置颜色的词语前面 print (test_list) worksheet.write_rich_string( 1 , 0 , * test_list) # 写入工作簿 workbook.close() # 记得关闭 |
结果如下:
2、docx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
from docx import document # pip install python-docx from docx.shared import rgbcolor, pt from docx.oxml.ns import qn content = [ "我爱" , "中国" , " 北京" ] print (content) # 创建文档对象 document = document() # 创建段落对象,注意,里面的内容会显示在段落开头 para = document.add_paragraph( '段落0\n' ) # 往para段落对象中添加正文内容 para.add_run(content[ 0 ]) # 往para对象添加内容的同时返回内容对象run,之后可以通过这个run对象给这个部分的文字设置样式,比如颜色,大小,字体等 run = para.add_run(content[ 1 ]) # 给run对象设置字体颜色属性, rgbcolor(250,0,0)表示红色 run.font.color.rgb = rgbcolor( 250 , 0 , 0 ) # 给run对象设置字体大小属性 run.font.size = pt( 20 ) # 给run对象设置字体类型属性 run.font.name = u '宋体' run._element.rpr.rfonts. set (qn( 'w:eastasia' ), u '宋体' ) # para对象中添加其他内容 para.add_run(content[ 2 ]) # 保存 document.save( 'test.docx' ) |
结果如下:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/weixin_43275179/article/details/89499969