python中能处理表格的模块有好多个,openpyxl模块只是其中一个,也是最简单的一个。
准备工作
- 1个Excel表格文档,学过的同学MySQL,你可以理解为数据库,叫做工作簿;
- 1个数据库里面包含多个表,Sheet1,Sheet2,Sheet3…这个叫做工作表
- 1个工作表里面有多个行(row)、列(column)、单元格(cell)
一、数据读取
import os
import openpyxl
指定工作路径
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
基本属性获取
#1.0读取工作簿的表名
workbook = openpyxl.load_workbook('99.xlsx') # 返回一个workbook数据类型的值
print(workbook.sheetnames) # 打印Excel表中的所有表
# 运行结果:列表
['Sheet1', 'Sheet2', 'Sheet3']
#2.1使用workbook['Sheet1']获取指定sheet表
sheet = workbook['Sheet1'] # 获取指定sheet表
print(sheet)
# 2.2使用workbook.active获取活动表
sheet = workbook.active
print(sheet)
#3.1使用sheet.dimensions获取表格的尺寸
####这里所说的尺寸大小,指的是excel表格中的数据有几行几列
sheet = workbook['Sheet1']
print(sheet.dimensions) # 获取表格的尺寸大小
运行结果:
A1:B7
获取单元格中的数据
方法1:指定坐标的方式
sheet = workbook['Sheet1']
cell1 = sheet['A2'] # 获取A2单元格的数据
cell2 = sheet['B7'] # 获取B7单元格的数据
# cell2 = sheet['B7'].value # 另一种写法
print(cell1.value,cell2.value)
方法2: 指定行列的方式,
也就是sheet.cell(row=, column=)
方式
cell1 = sheet.cell(row=1,column=1) # 获取第1行第1列的数据
cell2 = sheet.cell(row=3,column=2) # 获取第3行第2列的数据
print(cell1.value,cell2.value)
获取单元格的坐标
sheet = workbook['Sheet1']
cell = sheet.cell(row=3, column=2) # 获取第3行第2列的数据
print(cell.value, cell.row, cell.column, cell.coordinate)
获取区间内的数据
获取单行单列数据的时候,使用一层for循环;获取多行多列、指定区间的数据时,使用两层for循环
获取单行单列数据
workbook = openpyxl.load_workbook('99.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:')
print(sheet)
cell = sheet['A1:A7'] # 获取A1到A7的数据
print(cell)
# 打印A1到A7的数据
for i in cell:
for j in i:
print(j.value)
获取指定行列的数据
获取一行数据
cell = sheet['4'] # 获取第4行的数据
# 打印A4到B4的数据
for i in cell:
print(i.value)
获取两列数据
workbook = openpyxl.load_workbook('99.xlsx') #返回一个workbook数据类型的值
sheet = workbook.active #获取活动表
print('当前活动表是:' + str(sheet))
cell = sheet['A:B'] #获取AB列的数据
# 打印AB列数据
for i in cell:
for j in i:
print(j.value)
两列的结果打印到一起了,可读性较差。
按行、列获取值
按行获取值
for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2):
for j in i:
print(j.value)
#运行结果:
# 张三
# 74
# 李四
# 41
# 王五
# 56
# 赵六
# 12
按列获取值
for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2):
for j in i:
print(j.value)
#运行结果:
# 张三
# 李四
# 王五
# 赵六
# 74
# 41
# 56
# 12
二、数据写入
创建新的Excel
import os
import openpyxl
path = r"D:\code\python\08.模块"
os.chdir(path) # 修改工作路径
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = 'pokes01' #创建表并指定名称,如果不写默认创建表名sheet
workbook.save('1.xlsx') #保存为1.xlsx的文档
修改单元格、excel另存为
workbook = openpyxl.load_workbook('1.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
sheet['A1'] = 'name'
workbook.save('test.xlsx')
插入有效数据
import os
import openpyxl
path = r"D:\code\python\08.模块"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:' + str(sheet))
data = [
['素子',23],
['巴特',24],
['塔奇克马',2]
]
for row in data:
sheet.append(row) # 使用append插入数据,追加数据
workbook.save('test.xlsx')