本文将会介绍如何使用Python来获取Excel中的数据验证内容,即常见的下拉菜单。
笔者最近在工作中遇到了一个Excel解析的小问题,经一番努力终于解决,特于此记录。
在Excel文件中,如果单元格中存在下拉菜单,也就是数据验证内容,如下:
如果使用Python的pandas模块,那么是无法解析该单元格中的内容的。此时,需要使用openpyxl模块,用来获取单元格中的数据验证内容。
以上述的示例Excel文件为例,文件名为测试excel文档.xlsx
。
解析的Python代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
from openpyxl import load_workbook
def check_report_normal_file_process(file_path): wb = load_workbook(file_path, data_only=True) sheet = wb[wb.sheetnames[0]]
dv = sheet.data_validations.dataValidation
validation_dict = {} for validation in dv: options = validation.formula1 if options.startswith('"') and options.endswith('"'): options_list = options.strip('"').split(',') elif options.startswith('='): range_ref = options[1:] range_values = sheet[range_ref] options_list = [_.value for row in range_values for _ in row] else: options_list = []
for cell in validation.cells: validation_dict[cell] = options_list
return validation_dict
if __name__ == '__main__': test_file_path = '../data/测试excel文件.xlsx' t = check_report_normal_file_process(test_file_path) print(t)
|
输出结果为:
{<CellRange A2>: ['中国', '日本', '美国', '韩国', '英国', '法国']}
输出内容为单元格所在位置及其数据验证列表。
因此,使用该解析方法可轻松获取Excel中的数据验证内容。
欢迎关注我的公众号NLP奇幻之旅,原创技术文章第一时间推送。
欢迎关注我的知识星球“自然语言处理奇幻之旅”,笔者正在努力构建自己的技术社区。