使用python处理excel基础

Excel 基本概念(很重要)

Excel 概念 openpyxl 对应
Excel 文件 Workbook
工作表 Worksheet
单元格 Cell
行 / 列 row / column

创建一个 Excel 文件(写)

创建并保存 Excel

from openpyxl import Workbook

wb = Workbook()              # 创建工作簿
ws = wb.active               # 获取当前活动工作表
ws.title = "学生成绩"         # 重命名工作表

# 写入数据
ws["A1"] = "姓名"
ws["B1"] = "语文"
ws["C1"] = "数学"

ws.append(["张三", 85, 90])
ws.append(["李四", 78, 88])

wb.save("成绩表.xlsx")

append()会自动写到下一行

读取 Excel 文件(读)

打开已有 Excel

from openpyxl import load_workbook

wb = load_workbook("成绩表.xlsx")
ws = wb["学生成绩"]

# 读取单元格
print(ws["A1"].value)
print(ws.cell(row=2, column=1).value)

遍历所有行

for row in ws.iter_rows(values_only=True):
    print(row)

输出:

('姓名', '语文', '数学')
('张三', 85, 90)
('李四', 78, 88)

常用操作大全

选择工作表

ws = wb["Sheet1"]
ws = wb.active

获取最大行 / 列

print(ws.max_row)
print(ws.max_column)

插入行 / 列

ws.insert_rows(2)     # 在第 2 行前插入
ws.insert_cols(1, 2)  # 在第 1 列前插入 2 列

删除行 / 列

ws.delete_rows(3)
ws.delete_cols(2)

合并单元格

ws.merge_cells("A1:C1")
ws["A1"] = "学生成绩表"

取消合并:

ws.unmerge_cells("A1:C1")

设置单元格样式(字体、颜色)

from openpyxl.styles import Font

ws["A1"].font = Font(
    name="微软雅黑",
    size=14,
    bold=True,
    color="FF0000"
)

设置列宽 / 行高

ws.column_dimensions["A"].width = 20
ws.row_dimensions[1].height = 30

公式 & 数字格式

写入公式

ws["D2"] = "=SUM(B2:C2)"

设置数字格式

from openpyxl.styles import numbers

ws["B2"].number_format = numbers.FORMAT_NUMBER_00

实战示例:自动生成成绩单

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "成绩单"

headers = ["姓名", "语文", "数学", "总分"]
ws.append(headers)

students = [
    ("张三", 85, 90),
    ("李四", 78, 88),
    ("王五", 92, 95)
]

for name, chinese, math in students:
    ws.append([name, chinese, math, f"=B{ws.max_row}+C{ws.max_row}"])

wb.save("自动成绩单.xlsx")
posted @ 2026-05-06 17:35  MKYC  阅读(25)  评论(0)    收藏  举报