python:使用openpyxl模块处理excel

发布于:2024-07-11 ⋅ 阅读:(24) ⋅ 点赞:(0)

前言

        最近在实践excel的处理,在此途中,我彻底抛弃了xlwt + xlrd的组合,投入了openpyxl这一模块的怀抱。

        并成功实现了excel单元格数据的快速访问、修改、样式保持,以及添加填充色等功能。

        至于为什么写这个博客,主要是因为现在csdn里留着很多关于xlwt + xlrd的无脑使用,这为其他开发人员设置了一种过时的误区。

        这里我提供一些详细的测试代码,截止现在它们都可以直接运行,或许将为你的功能添砖加瓦。

 

代码

        1、获得目标行目标列、制定单元格的数据

from openpyxl import load_workbook

# 打开现有的Excel文件
wb = load_workbook("appendix/test_openpyxl.xlsx")

# 获取活动的Worksheet
ws = wb.active

"""
    读取行数据
"""
# 读取第二行的数据
second_row = []
for cell in ws[2]:  # ws[2] 表示第二行的单元格对象
    second_row.append(cell.value)
print("第二行的数据:", second_row)

"""
    读取列数据
"""
# 读取从第一行开始的 从第四列开始至第六列结束的所有数据集(二维列表)
rows = ws.iter_rows(min_row=1, min_col=4, max_col=6, values_only=True)
fourth_column = []
for row in rows:
    fourth_column.append(row)
print("四五六列的所有数据:", fourth_column)

# fourth_column[row][col]
# row:以起始行开始计算的列号,这里相当于1+1=2行
# col:以起始列开始计算的列号,这里相当于4+1=5列
print('第五列第二行数据:', fourth_column[1][1])

"""
    读取精准行列数据
"""
print('第12列第4行数据:', ws.cell(row=4, column=12).value)

# 关闭Excel文件
wb.close()

        2、在保持原模板样式不变的条件下变更数据、以及新增样式

from openpyxl import load_workbook

# 1. 读取原Excel文件
original_file_path = 'appendix/test.xlsx'
workbook_original = load_workbook(original_file_path)

workbook_original_sheet = workbook_original.active

# 3. 复制原Excel的内容到新文件
sheet_original = workbook_original.active

# 4. 获取M列数据项
column_M = sheet_original['M']

# 5. 输出M列的数据项
for index, cell in enumerate(column_M):
    print(cell.value)

# 6. 修改内容(例如修改M3单元格内容)
workbook_original_sheet['M3'] = '通过'

# 这是另外一种修改方式,row是指定行,column是指定列 这里表示 3行13列
# workbook_original_sheet.cell(row=3, column=13, value='通过')

# 7. 检查M列,若值为 通过则标绿,不通过标红
for index, cell in enumerate(column_M):
    status = cell.value
    if status == "通过":
        fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")  # 绿色
    elif status == '不通过':
        fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")  # 红色
    else:
        continue
    cell.fill = fill

# 8. 保存新的Excel文件
new_file_path = 'test_manfish.xlsx'
workbook_original.save(new_file_path)

        创作不易,点个关注行不行