引言:上一篇介绍用pandas的.read_excel()函数查询excel,用to_excel()来写个excel,用openpyxl的load_workbook()来追加新数据。但以上模块的这些函数的应用对于这些模块来说用途只是凤毛麟角,你想知道删除和修改里面的excel中数据如何操作吗?快来看我操作
准备:操作系统:Windows10;python版本:python3.8以上
一、使用openpyxl库删除数据
先安装openpyxl,使用pip/pip3来安装一下
pip intsall openpyxl
接着使用“天龙八部2.xlsx”这个表来实验,我们的实验目的是:
删除特定的单元格的数据,删除某一行的数据,删除某一列的数据
1. 删除特定单元格数据
首先,查看一下excel中的内容
感觉慕容复的门派字数太长了,就删它了,它在Sheet1的C5格子内
先用.load_workbook()打开这个excel
from openpyxl import load_workbook wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx' #删除特定单元格的数据 #打开excel文件 wb = load_workbook(wri_path)
然后选择表“Sheet1”
#选择表"Sheet1" sheet = wb.get_sheet_by_name('Sheet1')
删除C5单元格值,赋值为空即可
#删除C5的值,行为5,列为3(这里使用修改的方式) sheet['C5'].value = None #或者使用 '' 来清除内容
关闭表和excel
#保存并关闭Excel表 wb.save(wri_path) wb.close()
结果是,C5这个单元格没有数据了
2. 删除某一行数据
我们就把慕容复这行数据给删了吧,这是第5行
先打开excel,选中表Sheet1
wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx' #删除第5行数据 #打开excel表,选中Sheet1 wb = load_workbook(wri_path) sheet = wb.get_sheet_by_name('Sheet1')
然后删除第5行数据
#删除第五行的这一行数据 sheet.delete_rows(idx = 5, amount = 1) #dix是第几行,amount是删除的行数
最后保存操作
#保存删除操作 wb.save(wri_path)
结果是:
打开excel表第5行数据已经删除了
3. 删除某一列数据
我们看年龄这列有些假,就删掉这列数据,这是第2列
先打开excel表选中Sheet1表
wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx' #删除第2列数据 #打开excel,选择Sheet1表 wb = load_workbook(wri_path) sheet = wb.get_sheet_by_name('Sheet1')
然后删除第2列数据并保存
#删除第二列的这一行数据 sheet.delete_cols(idx = 2, amount = 1) #dix是第几列,amount是删除的列数 #保存删除操作 wb.save(wri_path)
运行结果是:
excel表的第2列被删除了
删除的完整代码:
from openpyxl import load_workbook wri_path = '请选择你的excel文件路径' #删除特定单元格的数据 #打开excel文件 wb = load_workbook(wri_path) #选择表"Sheet1" sheet = wb.get_sheet_by_name('Sheet1') #删除C5的值,行为5,列为3(这里使用修改的方式) sheet['C5'].value = None #或者使用 '' 来清除内容 #保存并关闭Excel表 wb.save(wri_path) wb.close() #删除第5行数据 wb = load_workbook(wri_path) sheet = wb.get_sheet_by_name('Sheet1') #删除第五行的这一行数据 sheet.delete_rows(idx = 5, amount = 1) #dix是第几行,amount是删除的行数 #保存删除操作 wb.save(wri_path) #删除第2列数据 wb = load_workbook(wri_path) sheet = wb.get_sheet_by_name('Sheet1') #删除第二列的这一行数据 sheet.delete_cols(idx = 2, amount = 1) #dix是第几列,amount是删除的列数 #保存删除操作 wb.save(wri_path)
二、使用openpyxl库修改数据
修改单元格数据有两种方法,一种是直接找到这个值去修改(修改整行数据要用列表表示),就像上述删除里面赋值的方法,还有一个是用.value方法来修改数据
1. 直接修改数据
前面的选中步骤和后面的保存操作我这里就不演示了,这里我就写一写关键性代码
看到还是这个删除操作过的"天龙八部2.xlsx"的excel中,修改“岳老三”为"天山童姥"
#修改数据A10数据 sheet['A10'] = '天山童姥'
结果如下: ‘岳老三’修改为‘天山童姥’了
我们干脆把这一整行的数据都改成“天山童姥”的属性,
2. 修改整行数据
也是先打开表,选中Sheet1,然后选中第10行数据,再逐个将数据修改成新数据,最后保存操作
#修改行数据 new_data = ['天山童姥','灵鹫宫','八荒六合掌'] #获取第10行数据 row = sheet[10] #将数据逐个插入到单元格中 for cell, data in zip(row, new_data): cell.value = data
结果是:第10行数据已经修改成新数据了
3. 间接修改数据
这边再来修改A7的单元格数据为"扫地僧",用.value的方式
#修改行数据 cell= sheet['A7'] cell.value = "扫地僧"
结果是:这个地方的数据改为"扫地僧",顺便说一句,上述的修改整行的方法也是用.value方法
完整的代码:
from openpyxl import load_workbook wri_path = '选择你的excel的路径' #修改单个单元格数据 #打开excel文件 wb = load_workbook(wri_path) #选择表"Sheet1" sheet = wb.get_sheet_by_name('Sheet1') #修改A10的数据 sheet['A10'] = '天山童姥' #保存操作 wb.save(wri_path) #修改整行数据 #打开excel文件 wb = load_workbook(wri_path) #选择表"Sheet1" sheet = wb['Sheet1'] insert_data = ['天山童姥','灵鹫宫','八荒六合掌'] #修改行数据 #获取第10行数据 row = sheet[10] #将数据逐个插入到单元格中 for cell, data in zip(row, insert_data): cell.value = data #保存操作 wb.save(wri_path) #使用.value方法修改单个单元格数据 #打开excel文件 wb = load_workbook(wri_path) #选择表"Sheet1" sheet = wb['Sheet1'] #修改行数据 cell= sheet['A7'] cell.value = "扫地僧" #保存操作 wb.save(wri_path)
参考:
1. python使用Excel文件(增、删、改、查)_python excel读取 删除-CSDN博客
以上使用方法和函数参考官方文档和以上专业博客,如有雷同侵权,请联系我处理,感谢各位同志们的支持