openpyxl遍历excel表格的每一行并且输出为字典类型

这段代码使用openpyxl库读取名为'demo1.xlsx'的Excel文件,获取活动工作表的最大行数和列数,然后遍历表格内容,将每行数据转化为字典存储到列表中,最后打印所有行数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码

# -*- coding: utf-8 -*-
# @Author   : zbz

from openpyxl import load_workbook

path = "./files/demo1.xlsx"
wb = load_workbook(filename=path)
ws = wb.active
row_num, col_num = ws.max_row, ws.max_column

items = []
for row in range(1, row_num + 1):
    item = {}
    for col in range(1, col_num + 1):
        key = ws.cell(1, col).value
        item[key] = ws.cell(row, col).value
    # 第一行只是字段
    if row != 1:
        items.append(item)

for item in items:
    print(item)
<< `openpyxl` 是 Python 中用于操作 Excel 文件(`.xlsx` 格式)的一个非常流行的库。它提供了丰富的功能来读取、写入和修改 `.xlsx` 文件中的内容。 以下是对 `openpyxl` 常用方法的详细介绍: ### 一、加载Excel文件并获取Workbook对象 ```python from openpyxl import load_workbook # 加载已有Excel文件 workbook = load_workbook('example.xlsx') ``` **解释**: 这里使用了 `load_workbook()` 函数加载已有的 `.xlsx` 文件,并生成一个 Workbook 对象。此对象表示整个Excel文档。 --- ### 二、访问工作表(Sheet) #### 方法1:按名称选择Sheet ```python sheet = workbook['SheetName'] ``` **返回值类型:** Sheet(Worksheet) 类型 **解释:** 按指定的名字从工作簿中提取某个特定的工作表 (如果不存在会抛出 KeyError 异常). #### 方法2:默认第一个Sheet ```python sheet = workbook.active ``` **返回值类型:** Worksheet **解释:** 获取当前活跃或默认的第一个工作表. #### 方法3:遍历所有Sheets ```python for sheet_name in workbook.sheetnames: print(sheet_name) ``` **返回值类型:** list[str] **解释:** 返回包含所有工作表名字的列表. --- ### 三、读取单元格(cell)的数据 #### 方法1:直接通过坐标索引读取单个Cell ```python cell_value = sheet['A1'].value print(f"Value of A1 is {cell_value}") ``` **返回值类型:** 取决于实际存储的内容,可能是 int,float,str,date 等等. **解释:** 直接利用类似字典的方式通过行列位置(A-Z为列名数字行号)来定位具体某单元格数据. #### 方法2:基于Row & Column Index读取单个Cell ```python row_index=1;col_index=1 #对应第一行第一列即A1 another_cell=sheet.cell(row=row_index,column=col_index).value print(another_cell) ``` **返回值类型:** 同上 **解释:** 使用 row 和 column 参数指定单元格的位置,其中 row 表示第几行,column 列数都必须是正整数值起始计数都是1而不是0开始计算! --- ### 四、批量处理Cells - 遍历一定范围内的多个cells #### 示例1: 单一行内循环迭代每个单元格 ```python for cell in sheet[5]: # 第五行的所有细胞作为可迭代项逐一打印它们各自的值 print(cell.value) ``` #### 示例2: 整块矩形区域迭代 ```python cell_range = sheet['A1':'C3'] for rows in cell_range: for cell in rows: print(cell.value,end=" ") print() ``` **返回值类型:** Generator object -> Cell Objects List[List[]]. 对于上述例子而言最终得到的结果结构类似于二维数组形式呈现出来。 #### 示例3: 特定条件下筛选部分满足条件的单元格集合 ```python matching_cells = [c for c in sheet.iter_rows(min_row=1,max_col=6,min_col=1,max_row=8) if isinstance(c.value,int)] ``` 这里我们创建了一个列表推导表达式用来找到所有的整数值类型的元素位于前八行六列范围内。 --- ### 五、添加新的Worksheets以及保存更改后的Excel Document File Back Disk Storage System #### 新增空Work Sheet ```python new_sheet = workbook.create_sheet("MyNewSheet") # 插到末尾处新增名为"MyNewSheet”的空白页签 # 或者可以插入任意位置如第二个参数指明index位子则覆盖掉该序号原来存在的那个老page标签页面 new_another_one=workbook.copy_worksheet(source_ws,new_title="CopiedVersion") ``` #### 修改后持久化储存回磁盘上的原始路径或者其他目标地址另存新档皆可实现如下所示步骤完成即可: ```python workbook.save(filename='modified_example.xlsx') ``` 以上涵盖了大部分关于如何运用 OpenPyXL 库进行基础级别的 Excel 文本编辑操作涵盖要点所在之处啦~ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值