·办公自动化(一)-python操作excel表(二)

引言:上一篇介绍用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博客

以上使用方法和函数参考官方文档和以上专业博客,如有雷同侵权,请联系我处理,感谢各位同志们的支持