# === 第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_row、ws.max_column |
| 读取指定格 | ws.cell(row=2, column=3).value |
| 保存文件 | wb.save("文件名") |
未经允许不得转载:百花谷博客 » 跟着AI学Python 第11课:用 openpyxl 处理 Excel

百花谷博客
微信关注,获取更多