一、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
对象后再写入。
六、应用场景
- 自动化报表生成:批量填充数据模板并添加图表。
- 数据清洗:通过公式和条件筛选清理 Excel 数据。
- 跨系统数据迁移:将数据库查询结果导出为 Excel 文件。