跳到主要内容

🔖 标注数据


本示例演示在 xlsx 中标注问题数据。

✅️ 任务分析

有如下表格文件'data.xlsx'

组名组员1组员1手机号组员2组员2手机号组员3组员3手机号组员4组员4手机号
组1Carr15399626268May17889274101Ryan1771776999Spring17680229660
组2Werner17586201172Angela18350882480Rod15906891463Adolph17177298309
组3Yvonne16655852825Wright138143952411Vera17709644527Charles1477522365
组4Stanley13011426087George13400371700Amanda15819868653Eugene14649665945
组5Marian15057866734Wanda1377862803Tyler15757554646Susanna13603342149
组6Virgil17126029509Beatrice15384093633Herman17546976485Katherine13441013235

表格中有几个手机号位数不够,现在要将它们在文件中标注出来。

可以遍历所有手机号,判断其格式,发现错误则将单元格标注为黄色,并将此行首列单元格也标注黄色,方便筛选有问题的行。


✅️ 完整代码

from DrissionRecord import Recorder, CellStyle

黄底 = CellStyle().set_bgColor('yellow') # 创建单元格样式对象并设置底色为黄色
r = Recorder('data.xlsx')
cols = [f'组员{i}手机号' for i in range(1, 5)] # 生成要检查的单元格列表

for row in r.rows(key_cols=cols): # 遍历所有行
for 表头, 手机号 in row.items(): # 在当前行遍历需要检查的列
if len(str(手机号)) != 11: # 手机号位数不正确
r.add_styles(黄底, row.coord(表头)) # 标注不正确手机号单元格
r.add_styles(黄底, (row.row, 1)) # 标注有不正确手机号的行的首列

r.record()

✅️ 代码解读

📌 key_cols参数

[f'组员{i}手机号' for i in range(1, 5)]生成每行要检查的单元格的表头列表:

['组员1手机号', '组员2手机号', '组员3手机号', '组员4手机号', '组员5手机号']

遍历每行的时候,程序只从中获取这些列的数据。


📌 遍历上述列

每行数据是一个dict,如{'组员1手机号': 15399626268, '组员2手机号': 17889274101, '组员3手机号': 1771776999, '组员4手机号': 17680229660}

items()获取表头值和手机号进行判断,如果手机号有错,则根据表头进行标注。


📌 标注底色

add_styles()对指定单元格设置底色。

因为出错的列号预先是不知道的,不能用(row.row, 'C')这种格式。

需要用row.coord(表头),获取这行表头变量指向的列的坐标。

另一种写法r.add_styles({表头: 黄底}, row.row)也可以,效果一样。

最后不要忘记保存r.record()


✅️ 执行结果

根据第一列底色筛选出所有包含错误手机号的列: