读写Excel

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_rowsinsert_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_rowsdelete_cols 方法,分别用来删除

python 复制代码
import openpyxl

ts=openpyxl.load_workbook('年龄表1.xlsx')
sheet=ts['年龄表']

sheet.delete_rows(4)
sheet.delete_cols(2)

ts.save('年龄表1.xlsx')
相关推荐
zhipujiaoyu4 分钟前
2026年大数据专科何去何从?就业前景、发展趋势全揭秘!
大数据·python
l12586520 分钟前
# RAG噪声知识库治理:一致性与可信度的四层防线设计
数据库·人工智能·python·自然语言处理·langchain
zoujiahui_201823 分钟前
别再只写 np.random.seed() 了:default_rng 与 np.random、random 到底差在哪?
python
Patrick在香港25 分钟前
Claude Agent 进阶:4 种工具调用编排模式,让 0820 那 13 个 endpoint 并行起来
python·ai·ai编程
qq_513728041 小时前
StaleElementReferenceException(陈旧元素引用异常)
python
千里码aicood1 小时前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python
战略性的菠萝2 小时前
研究生基础-Python快速入门(终)——面向对象
python
陈皮波比茶2 小时前
Python项目实战-网络机器人(爬虫)
开发语言·网络·爬虫·python·机器人
winfredzhang2 小时前
从零构建家庭照片管理系统:Django 模块化单体实战,以及我踩到的 4 个真实坑
python·postgresql·django·sqlite·bootsrap
jyOverQ2 小时前
LangGraph 流式执行详解:stream、astream 与 stream_mode 怎么选?
python·langchain