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。
发表回复