Python-Openpyxl 库详解

一、Openpyxl 库简介

Openpyxl 是 Python 中用于操作 Excel 文件的第三方库,专注于处理 .xlsx.xlsm 等 Office Open XML 格式文件。其核心功能包括读取、写入、修改 Excel 数据,支持单元格样式、图表、公式等高级操作。
核心优势

  • 功能全面:支持数据读写、样式调整、图表生成、公式计算等,覆盖 Excel 操作的 90% 以上需求。
  • 高效轻量:能处理百万行级别的数据,适用于自动化办公与数据分析场景。
  • 跨平台兼容:支持 Windows、macOS 和 Linux 系统,与 Microsoft Excel 无缝兼容。
二、安装与环境配置

通过 pip 一键安装:

bash

pip install openpyxl

安装后导入模块即可使用:

python

import openpyxl

 

三、基础操作与常用函数
1. 创建与保存工作簿
  • 创建新 Excel 文件

    python

    from openpyxl import Workbook
    wb = Workbook()                 # 创建新工作簿
    ws = wb.active                  # 获取默认工作表
    ws.title = "数据表"             # 重命名工作表
    wb.save("new_file.xlsx")        # 保存文件[1,5](@ref)
  • 加载现有 Excel 文件

    python

    wb = openpyxl.load_workbook("example.xlsx")  # 读取文件
2. 工作表与单元格操作
  • 选择工作表

    python

    sheet = wb["Sheet1"]            # 按名称选择工作表
    sheet = wb.worksheets[0]        # 按索引选择(首个工作表)[5](@ref)
  • 读写单元格数据

    python

    # 方式1:通过坐标(A1格式)
    cell_value = sheet["A1"].value  # 读取数据
    sheet["B2"] = "Python"          # 写入数据[1](@ref)
    
    # 方式2:通过行列索引(从1开始)
    cell = sheet.cell(row=3, column=2, value=100)  # 写入数值[7](@ref)
3. 批量数据处理
  • 逐行写入数据

    python

    data = [["姓名", "年龄"], ["张三", 25], ["李四", 30]]
    for row in data:
        sheet.append(row)           # 追加数据到末尾行[5](@ref)
  • 遍历单元格区域

    python

    for row in sheet.iter_rows(min_row=2, max_col=3):  # 限定行、列范围
        for cell in row:
            print(cell.value)        # 逐行逐列读取[6](@ref)

 

四、高级功能与常用函数
1. 单元格样式设置

支持字体、颜色、对齐等样式调整:

python

from openpyxl.styles import Font, PatternFill, Alignment

# 设置字体样式
font = Font(name="宋体", size=12, bold=True, color="FF0000")
sheet["A1"].font = font

# 设置背景填充色
fill = PatternFill(start_color="FFFF00", fill_type="solid")
sheet["A1"].fill = fill

# 设置水平居中
sheet["A1"].alignment = Alignment(horizontal="center")[5,7](@ref)
2. 图表与公式应用
  • 生成柱状图

    python

    from openpyxl.chart import BarChart, Reference
    chart = BarChart()
    data = Reference(sheet, min_col=2, min_row=1, max_row=5)  # 选择B列数据
    chart.add_data(data, titles_from_data=True)
    sheet.add_chart(chart, "E5")     # 将图表插入E5位置[6,7](@ref)
  • 使用 Excel 公式

    python

    sheet["C1"] = "=SUM(A1:B1)"      # 计算A1+B1的和
    sheet["D1"] = "=AVERAGE(A1:A10)" # 计算A列前10行均值[6](@ref)
3. 高级工作表操作
  • 合并单元格

    python

    sheet.merge_cells("A1:D1")       # 合并A1到D1的单元格
    sheet.unmerge_cells("A1:D1")     # 取消合并[7](@ref)
  • 调整行列尺寸

    python

    sheet.column_dimensions["A"].width = 20   # 设置A列宽度
    sheet.row_dimensions[1].height = 30       # 设置首行高度[5](@ref)

 

五、实用技巧与注意事项
1. 性能优化
  • 大文件处理:使用 iter_rows() 逐行读取,避免内存溢出。
  • 批量操作:减少频繁的 save() 调用,优先在内存中完成修改后一次性保存。
2. 异常处理

python

try:
    wb = openpyxl.load_workbook("file.xlsx")
except FileNotFoundError:
    print("文件不存在!")
3. 资源管理

推荐使用 with 语句自动关闭文件:

python

with openpyxl.load_workbook("data.xlsx") as wb:
    sheet = wb.active
    # 处理数据...
4. 注意事项
  • 文件占用:保存前确保 Excel 未被其他程序打开。
  • 日期处理:需将日期转换为 datetime 对象后再写入。

六、应用场景
  1. 自动化报表生成:批量填充数据模板并添加图表。
  2. 数据清洗:通过公式和条件筛选清理 Excel 数据。
  3. 跨系统数据迁移:将数据库查询结果导出为 Excel 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值