python基础:openpyxl模块处理Excel表格

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')

猜你喜欢

转载自blog.csdn.net/annita2019/article/details/128868852