如何使用Openpyxl按表名和列名访问Excel表格并遍历列
使用Openpyxl通过表名和列名遍历Excel列数据
要实现通过表名和列名访问数据,核心是先明确Excel表格的单元格范围和列名-列位置映射,再针对性遍历。以下是具体实现方案:
步骤说明
- 获取表格的单元格区域:通过Table对象的
ref属性拿到表格的完整单元格范围(比如A1:D10),再用工作表的range()方法获取该区域的所有单元格。 - 建立列名与列索引的映射:提取表格的表头行,把每个列名对应到它在表格中的列位置(索引)。
- 遍历目标列的行数据:跳过表头行,遍历表格的每一行,通过列索引提取对应列的单元格值。
完整代码示例
import openpyxl as pyxl # 加载Excel文件,仅读取数据 input_excel_file = pyxl.load_workbook(path_backup_excel_file, data_only=True) # 定位到目标工作表 sheet_panels_to_run = input_excel_file['Panels to Run'] # 获取指定表格对象 request_table = sheet_panels_to_run.tables['RequestTable'] # 获取表格对应的单元格区域 table_range = sheet_panels_to_run[request_table.ref] # 提取表头行,建立列名到列索引的映射 header_cells = next(table_range.iter_rows(min_row=1, max_row=1, values_only=True)) column_name_to_idx = {name: idx for idx, name in enumerate(header_cells)} # 目标列名 target_column = "Panel Name" # 获取目标列的索引 target_col_idx = column_name_to_idx[target_column] # 遍历表格数据行(跳过表头) for row in table_range.iter_rows(min_row=2, values_only=True): # 提取目标列的单元格值 cell_value = row[target_col_idx] print(cell_value)
关键代码解释
request_table.ref:返回表格的完整单元格范围字符串(比如A1:D10),通过sheet[request_table.ref]可直接获取该区域的所有单元格对象。iter_rows(values_only=True):直接返回每行的单元格值组成的元组,无需手动处理Cell对象,简化代码。column_name_to_idx字典:将表头的列名和对应的列索引绑定,后续通过列名就能快速定位列位置,无需硬编码坐标。
内容的提问来源于stack exchange,提问作者Hibbert
相关产品推荐
相关产品推荐

