openpyxl 模块常用函数速查

创建与加载工作簿

· Workbook() 创建一个全新的 .xlsx 工作簿。

· load_workbook(filename, read_only=False, data_only=False) 读取已有的 Excel 文件并返回 Workbook 对象。

from openpyxl import Workbook, load_workbook

# 新建工作簿
wb = Workbook()
ws = wb.active          # 默认激活的 Sheet
ws.title = "Demo"

# 加载已有文件
wb2 = load_workbook('example.xlsx')
ws2 = wb2['Sheet1']
    

工作表(Sheet)操作

· wb.create_sheet(title, index=None) 创建新工作表,可指定位置。

· wb.active 获取当前激活的工作表。

· wb.remove(ws) 删除指定工作表。

# 创建新工作表并移动位置
ws_new = wb.create_sheet('统计')
wb.move_sheet(ws_new, offset=-1)   # 向前移动一位

# 删除工作表
wb.remove(wb['旧表'])
    

读写单元格

· ws['A1'] = value 直接写入单元格。

· ws.cell(row, column, value=None) 按行列坐标读写。

· ws.append(iterable) 在末尾追加一行数据。

# 写入
ws['A1'] = '姓名'
ws['B1'] = '成绩'

# 按坐标写入
ws.cell(2, 1, '张三')
ws.cell(row=2, column=2, value=88)

# 追加整行
ws.append(['李四', 92, '优秀'])
    

单元格样式

使用 openpyxl.styles 中的类进行格式化。

from openpyxl.styles import Font, Alignment, PatternFill

# 字体加粗、颜色
bold_font = Font(name='Arial', size=14, bold=True, color='FF0000')
ws['A1'].font = bold_font

# 居中对齐
center_align = Alignment(horizontal='center', vertical='center')
ws['B1'].alignment = center_align

# 背景填充(黄色)
yellow_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
ws['A2'].fill = yellow_fill
    

合并与拆分单元格

· ws.merge_cells(start_row, start_column, end_row, end_column) 合并区域。

· ws.unmerge_cells(range_string) 拆分。

# 合并 A1:C1
ws.merge_cells('A1:C1')
ws['A1'] = '标题'

# 拆分
ws.unmerge_cells('A1:C1')
    

插入/删除行列

· ws.insert_rows(idx, amount=1) 在 idx 行前插入。

· ws.delete_rows(idx, amount=1) 删除行。

· ws.insert_cols(idx, amount=1) 插入列。

ws.insert_rows(3)          # 在第3行前插入空行
ws.delete_cols(5, 2)       # 删除第5列及其右侧第2列
    

数据验证(下拉列表)

使用 DataValidation 创建下拉框。

from openpyxl.worksheet.datavalidation import DataValidation

dv = DataValidation(type="list", formula1='"是,否"', allow_blank=True)
ws.add_data_validation(dv)
dv.add(ws["C2"])   # C2 单元格出现下拉框
    

公式的读取与写入

写入公式直接赋值,读取时使用 cell.value(若 data_only=True 则返回计算结果)。

ws['D2'] = '=SUM(B2:C2)'          # 写入求和公式
value = ws['D2'].value           # 返回字符串 '=SUM(B2:C2)'
# 读取计算结果(需要 load_workbook(..., data_only=True))
wb_calc = load_workbook('example.xlsx', data_only=True)
calc_val = wb_calc.active['D2'].value
    

创建图表(柱状图示例)

openpyxl 支持多种图表,下面演示柱状图的基本流程。

from openpyxl.chart import BarChart, Reference

# 假设 A1:A4 为类别,B1:B4 为数值
data = Reference(ws, min_col=2, min_row=1, max_row=4)
cats = Reference(ws, min_col=1, min_row=2, max_row=4)

chart = BarChart()
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.title = "销量统计"

ws.add_chart(chart, "E5")   # 将图表放在 E5 位置
    

保存工作簿

完成所有操作后使用 wb.save(filename) 将文件写入磁盘。

wb.save('my_report.xlsx')
    

帮助快速上手 openpyxl。若需要更细致的 API 说明,可参考官方文档或上述教程。