openpyxl 是目前比较常用的操作Excel的Python库,openpyxl库既可以读文件,也可以写文件,也可以修改文件。
安装 openpyxl
python
pip install openpyxl
打开现有Excel文件
可以使用openpyxl.load_workbook()方法打开现有的Excel文件,可以打开xlsx,xlsm,xltx,xltm这些格式,不能打开老的xls格式。
python
from openpyxl import load_workbook
test = load_workbook(r'E:\桌面\test.xlsx')
print(f"表单名分别是:{test.sheetnames}")
print(f"表单的数量为:{len(test.sheetnames)}")
要读取某个表单里单元格中的数据,必须要先获取表单(sheet)对象。
*
读取指定的单元格
可以这样sheet['B5']根据列名,行号 直接访问某个单元格。也可以这样sheet.cell(row=5,column=2)根据列号,行号直接访问某个单元格。**注意:**行号列号都是从1开始,不是从0开始。
python
from openpyxl import load_workbook
test = load_workbook(r'E:\桌面\test.xlsx')
sheet = test.active
c1 = sheet['B2']
c2 = sheet['A2']
c3 =sheet.cell(row=2,column=1)
print(f"B2:{c1.value}")
print(f"A2:{c2.value}")
print(f"cell:{c3.value}")
print(f"表单名分别是:{test.sheetnames}")
print(f"表单的数量为:{len(test.sheetnames)}")
读取行和列里面的值
openpyxl 没有提供直接获取一行或者一列单元格的值的方法。
*
新建Excel,写入数据
python
"""
新建excel文件
"""
import openpyxl
#创建一个workbook对象
ZJB =openpyxl.Workbook()
sheet = ZJB.active
sh1 = ZJB.create_sheet('喜剧',0)
sh1['A1'] = '剧名'
sh1['B1']='剧情'
sh1['C1']='上映时间'
sh2 = ZJB.create_sheet('悬疑',1)
sh3 = ZJB.create_sheet('古装',2)
python
"""
写入数据
1.写数据基本的用法
"""
import openpyxl
#创建一个workbook对象
ZJB =openpyxl.Workbook()
sheet = ZJB.active
sh1 = ZJB.create_sheet('喜剧',0)
sh1['A1'] = '剧名'
sh1['B1']='剧情'
sh1['C1']='上映时间'
sh2 = ZJB.create_sheet('悬疑',1)
sh3 = ZJB.create_sheet('古装',2)
sh3['A2'] = '玉茗茶骨'
#保存文件
ZJB.save('追剧列表.xlsx')
python
"""
写入数据
2.保存在字典中的数据写入excel表中
"""
import openpyxl
NameAge={
'张飞' : 38,
'赵云' : 27,
'许褚' : 36,
'典韦' : 38,
'关羽' : 39,
'黄忠' : 49,
'徐晃' : 43,
'马超' : 23,
}
#创建一个workbook对象
ZJB =openpyxl.Workbook()
sheet = ZJB.active
sheet.title='年龄表'
sheet['A1']='姓名'
sheet['B1']='年龄'
#写入内容
row=2
for name,age in NameAge.items():
sheet.cell(row,1).value=name
sheet.cell(row,2).value=age
row=row+1
#保存文件
ZJB.save('年龄表.xlsx')
python
"""
写入数据
3.写入保存在列表和元组中的数据,可以使用append方法在sheet的末尾添加新行,写入数据。
"""
import openpyxl
NameAge= [
['张飞' , 38 ] ,
['赵云' , 27 ] ,
['许褚' , 36 ] ,
['典韦' , 38 ] ,
['关羽' , 39 ] ,
['黄忠' , 49 ] ,
['徐晃' , 43 ] ,
['马超' , 23 ]
]
#创建一个workbook对象
ZJB =openpyxl.Workbook()
sheet = ZJB.active
sheet.title='年龄表'
sheet['A1']='姓名'
sheet['B1']='年龄'
#写入内容
for row in NameAge:
sheet.append(row)
#保存文件
ZJB.save('年龄表1.xlsx')
插入行,插入列
sheet对象的insert_rows 和insert_cols 方法,分别用来插入行 和列。
python
import openpyxl
ts=openpyxl.load_workbook('年龄表1.xlsx')
sheet=ts['年龄表']
sheet.insert_rows(2)
sheet.iter_cols(3)
ts.save('年龄表1.xlsx')
删除行,删除列
sheet对象的delete_rows 和delete_cols 方法,分别用来删除行 和列。
python
import openpyxl
ts=openpyxl.load_workbook('年龄表1.xlsx')
sheet=ts['年龄表']
sheet.delete_rows(4)
sheet.delete_cols(2)
ts.save('年龄表1.xlsx')