openpyxl使用介绍

openpyxl是一个强大的Python库,可以方便地处理Excel文件。它提供了丰富的API来创建、读取、修改和格式化Excel文件。掌握这些基本操作后,你可以轻松地进行数据分析和报表生成等工作。

openpyxl使用介绍

openpyxl是一个用于读写Excel文件的Python库,它支持.xlsx和.xlsm等格式的文件操作。本文将详细介绍openpyxl的基本用法和常用功能。

安装openpyxl

1
pip install openpyxl

基本概念

在使用openpyxl之前,需要理解几个核心概念:

  • Workbook(工作簿):Excel文件本身
  • Worksheet(工作表):工作簿中的单个工作表
  • Cell(单元格):工作表中的单个单元格
  • Row(行):工作表中的一行数据
  • Column(列):工作表中的一列数据

创建新的Excel文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from openpyxl import Workbook

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

# 获取活动的工作表
ws = wb.active

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

# 添加数据到单元格
ws['A1'] = 'Hello'
ws['B1'] = 'World'

# 保存文件
wb.save('example.xlsx')

读取Excel文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from openpyxl import load_workbook

# 加载已存在的文件
wb = load_workbook('example.xlsx')

# 获取活动的工作表
ws = wb.active

# 读取单元格数据
cell_value = ws['A1'].value
print(cell_value) # 输出: Hello

# 也可以通过坐标访问
cell_value = ws.cell(row=1, column=1).value
print(cell_value) # 输出: Hello

写入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 方法1:通过坐标设置值
ws['A1'] = '姓名'
ws['B1'] = '年龄'
ws['A2'] = '张三'
ws['B2'] = 25

# 方法2:通过cell方法设置值
ws.cell(row=1, column=3, value='城市')
ws.cell(row=2, column=3, value='北京')

# 方法3:通过append方法
ws.append(["李四", "20", "上海"])

# 保存文件
wb.save('data.xlsx')

遍历工作表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from openpyxl import load_workbook

wb = load_workbook('data.xlsx')
ws = wb.active

# 遍历所有行
for row in ws.iter_rows(values_only=True):
print(row)

# 遍历特定范围
for row in ws['A1:C2']:
for cell in row:
print(cell.value, end=' ')
print()

操作工作表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from openpyxl import Workbook

wb = Workbook()

# 创建新工作表
ws1 = wb.create_sheet('Sheet2')

# 重命名工作表
ws1.title = '新工作表'

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

# 获取所有工作表名称
print(wb.sheetnames)

格式化单元格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill

wb = Workbook()
ws = wb.active

# 设置字体样式
ws['A1'] = '标题'
ws['A1'].font = Font(name='Arial', size=16, bold=True)

# 设置对齐方式
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')

# 设置背景色
ws['A1'].fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')

wb.save('styled.xlsx')

处理公式

1
2
3
4
5
6
7
8
9
10
11
from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 在单元格中输入公式
ws['A1'] = 10
ws['A2'] = 20
ws['A3'] = '=SUM(A1:A2)'

wb.save('formula.xlsx')

实际应用示例

下面是一个实际应用的例子:将CSV数据导入Excel文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import csv
from openpyxl import Workbook

def csv_to_excel(csv_file, excel_file):
wb = Workbook()
ws = wb.active

with open(csv_file, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row_idx, row in enumerate(reader, 1):
for col_idx, value in enumerate(row, 1):
ws.cell(row=row_idx, column=col_idx, value=value)

wb.save(excel_file)

# 使用示例
# csv_to_excel('data.csv', 'output.xlsx')