微信关注,获取更多

跟着AI学Python 第11课:用 openpyxl 处理 Excel

# === 第11课:用 openpyxl 处理 Excel ===

from openpyxl import Workbook
from openpyxl import load_workbook

# 1. 创建 Excel 文件
print("--- 创建 Excel ---")
wb = Workbook()                   # 创建工作簿
ws = wb.active                    # 获取活动工作表
ws.title = "成绩单"               # 给工作表命名

# 2. 写入数据
print("--- 写入数据 ---")
# 写表头
ws["A1"] = "姓名"
ws["B1"] = "语文"
ws["C1"] = "数学"
ws["D1"] = "英语"

# 写数据(按行写入)
ws.append(["张三", 85, 90, 78])
ws.append(["李四", 92, 88, 95])
ws.append(["王五", 76, 95, 82])
ws.append(["赵六", 88, 72, 91])

# 保存文件
wb.save("scores.xlsx")
print("成绩单已保存为 scores.xlsx")

print()

# 3. 读取 Excel 文件
print("--- 读取 Excel ---")
wb2 = load_workbook("scores.xlsx")    # 打开文件
ws2 = wb2["成绩单"]                    # 按名称获取工作表

# 读取单个单元格
print(f"A1 的值:{ws2['A1'].value}")
print(f"B2 的值:{ws2['B2'].value}")

# 获取最大行数和列数
print(f"总行数:{ws2.max_row}")
print(f"总列数:{ws2.max_column}")

print()

# 4. 遍历读取所有数据
print("--- 遍历数据 ---")
for row in ws2.iter_rows(min_row=1, values_only=True):
    print(row)

print()

# 5. 计算总分和平均分(新增列)
print("--- 计算总分 ---")
ws2["E1"] = "总分"
ws2["F1"] = "平均分"

for row in range(2, ws2.max_row + 1):
    chinese = ws2.cell(row=row, column=2).value
    math = ws2.cell(row=row, column=3).value
    english = ws2.cell(row=row, column=4).value

    total = chinese + math + english
    avg = round(total / 3, 1)          # round保留1位小数

    ws2.cell(row=row, column=5, value=total)
    ws2.cell(row=row, column=6, value=avg)

wb2.save("scores.xlsx")
print("总分和平均分已写入")

print()

# 6. 读取计算后的完整数据
print("--- 完整成绩单 ---")
wb3 = load_workbook("scores.xlsx")
ws3 = wb3["成绩单"]

for row in ws3.iter_rows(min_row=1, values_only=True):
    print(row)

print()

# 7. 实战:从 Excel 中筛选数据
print("--- 筛选数学>85的同学 ---")
for row in range(2, ws3.max_row + 1):
    name = ws3.cell(row=row, column=1).value
    math = ws3.cell(row=row, column=3).value
    avg = ws3.cell(row=row, column=6).value

    if math > 85:
        print(f"{name}:数学{math},平均分{avg}")

这一课的核心操作:

操作 代码
创建工作簿 Workbook()
打开文件 load_workbook("文件名")
读取单元格 ws["A1"].value
写入单元格 ws["A1"] = "值"
按行追加 ws.append([值1, 值2])
遍历所有行 ws.iter_rows(values_only=True)
获取行列数 ws.max_rowws.max_column
读取指定格 ws.cell(row=2, column=3).value
保存文件 wb.save("文件名")

未经允许不得转载:百花谷博客 » 跟着AI学Python 第11课:用 openpyxl 处理 Excel

评论

5+5=

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏