openpyxl 是 Python 中非常流行的一个模块,专门用于操作 Excel 文件(特别是 .xlsx 格式)。它可以读写 Excel 文件中的数据、样式、图表、图片等内容,并且支持高度定制的操作,因此非常适合需要操作 Excel 文件的场景。

1. 安装 openpyxl

首先,你需要安装 openpyxl 模块,可以通过以下命令安装:

pip install openpyxl

2. 打开和创建工作簿

2.1 打开一个已存在的 Excel 文件

使用 openpyxl.load_workbook() 方法打开一个已存在的工作簿(.xlsx 文件)。

from openpyxl import load_workbook

# 打开一个现有的 Excel 文件
wb = load_workbook('example.xlsx')

# 获取当前活跃的工作表
sheet = wb.active

# 或者通过名称获取工作表
sheet = wb['Sheet1']

2.2 创建一个新的 Excel 工作簿

如果你想创建一个新的工作簿,可以使用 openpyxl.Workbook() 方法。

from openpyxl import Workbook

# 创建一个新的工作簿
wb = Workbook()

# 获取当前活跃的工作表
sheet = wb.active

# 保存工作簿
wb.save('new_example.xlsx')

3. 操作工作表(Sheet)

3.1 获取工作表

openpyxl 中的工作簿(Workbook)可以包含多个工作表(Sheet)。你可以通过工作表的名称来获取工作表。

# 获取所有工作表
sheetnames = wb.sheetnames
print(sheetnames)  # 返回一个列表,包含所有工作表的名字

# 获取一个特定的工作表
sheet = wb['Sheet1']

3.2 创建新的工作表

你可以通过 create_sheet() 方法创建新的工作表。

# 创建一个新的工作表,默认会加在工作簿的末尾
new_sheet = wb.create_sheet('NewSheet')

# 创建一个新的工作表,放在特定位置
new_sheet = wb.create_sheet('NewSheet', 0)  # 在第一个位置创建

3.3 删除工作表

使用 remove() 方法删除工作表。

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

4. 读写单元格(Cells)

4.1 获取单元格的值

你可以通过 sheet['A1'] 的方式访问单元格,然后通过 .value 属性来获取单元格的值。

# 获取单元格 A1 的值
cell_value = sheet['A1'].value
print(cell_value)

4.2 设置单元格的值

通过 sheet['A1'] = 'Hello' 可以给指定单元格设置值。

# 设置单元格 A1 的值为 "Hello"
sheet['A1'] = 'Hello'

4.3 使用行和列的索引访问单元格

除了通过字母和数字来访问单元格,也可以使用行列的索引来访问。行和列的索引是从 1 开始的。

# 使用行列索引访问单元格,获取 A1 单元格的值
cell_value = sheet.cell(row=1, column=1).value
print(cell_value)

4.4 批量获取单元格的值

你可以通过循环获取整个表格或某一范围的值。

# 获取第一行的所有值
for cell in sheet[1]:
    print(cell.value)

# 获取 A1 到 D3 的范围
for row in sheet['A1:D3']:
    for cell in row:
        print(cell.value)

5. 行和列的操作

5.1 插入一行或一列

# 插入一行
sheet.insert_rows(2)

# 插入一列
sheet.insert_cols(2)

5.2 删除一行或一列

# 删除一行
sheet.delete_rows(2)

# 删除一列
sheet.delete_cols(2)

5.3 获取行或列

你可以通过 sheet.rows 或 sheet.columns 获取工作表的所有行或列。

# 获取所有行
for row in sheet.rows:
    for cell in row:
        print(cell.value)

# 获取所有列
for col in sheet.columns:
    for cell in col:
        print(cell.value)

6. 设置单元格样式

6.1 字体样式

通过 Font 类设置字体样式。

from openpyxl.styles import Font

# 设置 A1 单元格的字体为粗体
sheet['A1'].font = Font(bold=True)

# 设置字体为红色,斜体
sheet['A2'].font = Font(color="FF0000", italic=True)

6.2 背景色

通过 PatternFill 设置背景色。

from openpyxl.styles import PatternFill

# 设置 A1 单元格背景色为黄色
sheet['A1'].fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

6.3 边框

通过 Border 设置单元格的边框。

from openpyxl.styles import Border, Side

# 设置 A1 单元格的边框
border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
sheet['A1'].border = border

6.4 对齐方式

通过 Alignment 设置单元格内容的对齐方式。

from openpyxl.styles import Alignment

# 设置 A1 单元格内容居中
sheet['A1'].alignment = Alignment(horizontal='center', vertical='center')

7. 保存和保存为新的文件

保存工作簿:

# 保存当前工作簿
wb.save('example.xlsx')

保存为新的文件:

# 保存为新的文件
wb.save('new_example.xlsx')

8. 操作图表

openpyxl 支持插入图表,但需要 openpyxl.chart 模块。常见的图表包括折线图、柱状图、饼图等。

from openpyxl.chart import BarChart, Reference

# 创建图表
chart = BarChart()

# 定义图表的数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=3, max_row=10)

# 设置图表的数据源
chart.add_data(data, titles_from_data=True)

# 设置图表的位置
sheet.add_chart(chart, "E5")

# 保存工作簿
wb.save("chart_example.xlsx")

9. 处理图片

openpyxl 也允许在 Excel 文件中插入图片。可以通过 openpyxl.drawing.image.Image 来处理图片。

from openpyxl.drawing.image import Image

# 插入图片
img = Image("image.jpg")
sheet.add_image(img, 'B5')

# 保存工作簿
wb.save('image_example.xlsx')

10. 总结

openpyxl 是一个功能强大的库,提供了广泛的功能来操作 Excel 文件。你可以:

  • 创建、读取、修改工作簿和工作表。
  • 读写单元格数据。
  • 设置单元格样式,包括字体、背景色、对齐方式等。
  • 插入、删除行和列。
  • 操作图表和图片。

这个总结覆盖了最常用的操作,适合初学者进行 Excel 自动化处理,当然,openpyxl 还有更多高级功能,具体可以参考官方文档:openpyxl documentation