如何使用Python操作Excel
在进行操作前,我们先熟悉一下excel表格的基本术语:
- 工作簿:workbook。包含多个工作表的。
- 表单:worksheet。指一个工作簿里面的每个表单。
- 行:row
- 列:column
- 单元格:cell
这里我们使用openpyxl读取数据。
查看工作簿/工作表的内容
1
2
3
4
5
6
|
import openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
# 从工作簿查看工作表
print(wb.sheetnames)
—|—
也可以通过循环的形式打开工作表
1
2
3
4
5
6
7
|
import openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
# 从工作簿查看工作表
for sheet in wb:
print(sheet.title)
—|—
假如要想增加工作表,可以通过下面的程序实现
1
2
3
4
5
6
7
8
9
|
import openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
# 增加表单
Mysheet = wb.create_sheet("保育猪成本")
Mysheet2 = wb.create_sheet("育肥猪成本")
print(wb.sheetnames)
—|—
读取某个单元格内容
1
2
3
4
5
6
7
8
9
10
11
|
import openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
ws = wb.active
# 读取表单对象
print(ws['A1'])
# 读取单元格的内容
print(ws['A1'].value)
—|—
上面的程序未表示出行列坐标,如果想表示“第X行X列是X”,使用下面方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
ws = wb.active
c = ws['A1']
# 读取单元格的第一种方法
print('row {} column {} is {}'.format(c.row, c.column, c.value))
# 读取单元格的第一种方法
print(ws.cell(row=1, column=3).value)
# 读取一行多个单元格
for i in range(1,8):
print(ws.cell(row=i, column=3).value)
—|—
遍历某行或者某列的内容
通过下面的程序可以读取工作表中第五列的所有内容
1
2
3
4
5
6
7
8
9
|
mport openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
ws = wb.get_sheet_by_name("原始数据")
for i in range(5, ws.max_row+1):
name = ws.cell(row=i, column=5).value
print(name)
—|—
总结:
1
2
3
4
|
[1] import openyxl
[2] wb = openpyxl.load_wookbook("文件名")
[3] ws = wb.active or ws = wb.get_sheet_by_name(sheettitle)
[4] ws = ['A1'] or ws.cell(row=3, column=2)
—|—
新工作表的创建及保存
工作表和工作簿的创建比较简单。
1
2
3
4
5
6
7
8
9
10
11
|
import openpyxl
# 创建工作簿
ws = openpyxl.Workbook()
sheet = ws.active
# 给工作表命名
sheet.title = "first"
# 保存工作表
ws.save("examble2.xlsx")
—|—
当然也可以在原有文件的基础上创建工作表,注意最后保存文件时,使用另外一个名字,防止覆盖原文件的内容。
如果想要创建新的工作表,则使用create_sheet(index=0, title='名称')
,index代表表单的位置,title表示表单的名称,如果不填写表单的名称,会默认为sheet。
1
2
3
4
5
6
7
8
9
10
11
|
import openpyxl
# 创建工作簿
ws = openpyxl.Wookbook()
sheet = ws.active
ws.create_sheet(index=3, title='second')
# 保存工作表
ws.save("examble2.xlsx")
—|—
表单的删除使用如下程序
1
|
ws.remove_sheet(wb.get_sheet_by_name('second'))
—|—
向单元格写内容
最简单的是手工往里面填,这个用得少
1
|
sheet['A1'] = "填写单元格的内容"
—|—
向单元格批量填写如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
# 创建工作表
ws = wb.create_sheet("First")
for row in range(1,1000):
ws.append(range(1, 100, 2))
wb.save("excamble5.xlsx")
—|—
单元格内容的批量改写
基本方法是使用for循环对单元格进行遍历,当查找到需要改写的内容时,直接改写
遍历的程序如下:
1
2
3
4
5
6
7
8
9
10
|
import openpyxl
wb = openpyxl.load_workbook('examble.xlsx')
ws = wb.get_sheet_by_name("原始数据")
# 遍历第4列
for i in range(5, ws.max_row+1):
name = ws.cell(row=i, column=5).value
print(name)
—|—