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

引言:上一篇介绍用openpyxl库来删除修改excel表中的数据,本篇来做一次小总结,在新增一些表的操作和新的增删查改方法,下篇来写一些场景问题来应用最近写的这些操作,敬请期待~

准备:操作系统:Windows10;python版本:python3.8以上

一、python操作excel表总结与归纳

需要优先安装pandas库和openpyxl库,安装命令是:

pip install pandas
pip install openpyxl

1. 用openpyxl库给excel创建新表/增加数据

创建新的表(sheet),代码如下:

from openpyxl import load_workbook

wri_path = '选择自己的文件路径'  # 文件路径
workbook = load_workbook(wri_path)  # 打开excel文件
workbook.create_sheet("test1")  # 创建新的test1
workbook.save(wri_path)

插入空行和空列,代码如下: 

wri_path = '选择自己的文件路径'  # 文件路径
workbook = load_workbook(wri_path)  # 打开excel文件
sheet = workbook.get_sheet_by_name('Sheet1')
sheet.insert_cols(2)  # 在第2列即B列插入1列,原来的B列及后面的列都往后移动
sheet.insert_rows(2, 3)  # 在第2行后面插入3行
workbook.save(wri_path)

追加列数据,代码如下:

wri_path = '请选择你的excel文件路径'
#追加列数据(增加列数据)
#打开excel文件
excel = load_workbook(wri_path)
#选择工作表Sheet1
sheet = excel.get_sheet_by_name('Sheet1')
#追加定位位置
last_col = sheet.max_column
#追加新数据
col_data = ['请','填','写','你','的','数','据']
#遍历col_data的索引和它的值
for row, data in enumerate(col_data,start=1):
	# 将col_data的索引赋值给sheet的行,将数据最后的列+1赋值给sheet的列,col_data的值赋值给sheet的值
	sheet.cell(row = row, column = last_col + 1, value = data)
#保存并关闭Excel表
excel.save(wri_path)
excel.close()

追加行数据,代码如下:

wri_path = '请选择你的excel文件路径'
#追加新数据(增加数据)
#打开excel文件
excel = load_workbook(wri_path)
#选择工作表Sheet1
sheet = excel.get_sheet_by_name('Sheet1')
#追加定位位置
sheet.max_row + 1
#追加新数据
add_data = ['请','填','写','你','的','数','据']
sheet.append(add_data)
#保存并关闭Excel表
excel.save(wri_path)
excel.close()

2. 用openpyxl库删除数据

删除sheet(表),代码如下:

from openpyxl import load_workbook

wri_path = '请输入你的excel文件路径'  # 文件路径
workbook = load_workbook(wri_path)  # 打开excel文件
#先获取表
sheet=workbook["Sheet3"]
#再删除表
workbook.remove(sheet)  # 删除Sheet3表
#再保存表
workbook.save(wri_path)

删除单元格数据,代码如下:

wri_path = '请选择你的excel文件路径'
#删除特定单元格的数据
#打开excel文件
wb = load_workbook(wri_path)
#选择表"Sheet1"
sheet = wb.get_sheet_by_name('Sheet1')
#比如删除B6的值,行为6,列为2(这里使用修改的方式)
sheet['B6'].value = None  #或者使用 '' 来清除内容 
#保存并关闭Excel表
wb.save(wri_path)
wb.close()

删除行数据,代码如下:

wri_path = '请选择你的excel文件路径'
#删除第5行数据
wb = load_workbook(wri_path)
sheet = wb.get_sheet_by_name('Sheet1')
#删除第五行的这一行数据
sheet.delete_rows(idx = 4, amount = 1) #dix是第几行,amount是删除的行数 
#保存删除操作
wb.save(wri_path)

删除列数据,代码如下:

wri_path = '请选择你的excel文件路径'
#删除第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)

3. 用pandas库查询数据

查询全部数据,代码如下:

import pandas as pd
#自定义excel表的文件路径
exc_path = "请填写你的excel路径"
#使用pd.read_excel()函数读取excel表的内容
df0 = pd.read_excel(io = exc_path,index_col = None)
#打印df0的类型和df0的内容
print(df0)

查询特定sheet(表)的数据,代码如下:

import pandas as pd
#自定义excel表的文件路径
exc_path = "请填写你的excel路径"
#使用pd.read_excel()函数读取excel表的内容,表名为"Sheet1"的内容赋值给df0
df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1",index_col = None)
#打印df0的类型和df0的内容
print(df0)

查询特定列的数据,代码如下:

import pandas as pd
#自定义excel表的文件路径
exc_path = "请填写你的excel路径"
#使用pd.read_excel()函数读取excel表的内容,表名为"Sheet1"的内容赋值给df0
#usecols参数可以选择列:
#1.可以连续选择A到D列,追加参数usecols = "A:D";
#2.可以选择已知表头查询,比如"姓名"和"年龄",追加参数usecols = ["姓名","年龄"]
#3.可以选择非连续的几列数据,比如第1列和第4列,可以追加参数usecols = [1,4]
df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1", index_col = None, usecols = "A:D")
# df1 = pd.read_excel(io = exc_path, sheet_name = "Sheet1", index_col = None, usecols = ["姓名","年龄"])
# df2 = pd.read_excel(io = exc_path, sheet_name = "Sheet1", index_col = None, usecols = [1,4])
#打印df0的类型和df0的内容
print(df0)
#print(df1)
#print(df2)

查询指定列格式的数据,代码如下:

import pandas as pd
#自定义excel表的文件路径
exc_path = "请填写你的excel路径"
#使用pd.read_excel()函数读取excel表的内容,表名为"Sheet1"的内容赋值给df0
#dtype参数:选择特定列,并修改列数据的数据类型
df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1", index_col = None, dtype={'年龄' : float})

#打印df0的内容
print(df0)

查询指定行的数据,代码如下:

import pandas as pd

exc_path = '请选择你的excel表的路径'
#使用pd.read_excel()函数读取excel表的内容,表名为"Sheet1"的内容赋值给df0
df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1", index_col=None)
#[]范围查询,左闭右开,第6行数据,应该表示为[5:6]
row_data = df0[5:6]

print(row_data)

查询特定单元格的数据,代码如下:

import pandas as pd

exc_path = '请填写你的excel文件的路径'

df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1", index_col=None)
data = df0.loc[5, "姓名"]
print(data)

当然还有很多的pandas查询方法,我这边就列一些我们常用的

4. 用openpyxl库修改数据

 修改某个单元格数据,代码如下:

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)

修改某一行的数据,代码如下:

from openpyxl import load_workbook
 
wri_path = '选择你的excel的路径'
#修改整行数据
#打开excel文件
wb = load_workbook(wri_path)
#选择表"Sheet1"
sheet = wb['Sheet1']
modify_data = ['你','的','数','据']
#修改行数据 
#获取第10行数据
row = sheet[10] 
#将数据逐个插入到单元格中
for cell, data in zip(row, modify_data):   
    cell.value = data  
#保存操作
wb.save(wri_path)

修改某一列数据,代码如下: 

from openpyxl import load_workbook
 
wri_path = '选择你的excel的路径'
#修改整行数据
#打开excel文件
wb = load_workbook(wri_path)
#选择表"Sheet1"
sheet = wb['Sheet1']
modify_data = ['你','的','数','据']
#修改行数据 
#获取第B列数据,包括表头
col = sheet['B'] 
#将数据逐个插入到单元格中
for cell, data in zip(col, modify_data):   
    cell.value = data  
#保存操作
wb.save(wri_path)

参考:

1. python使用Excel文件(增、删、改、查)_python excel读取 删除-CSDN博客

2. Python:利用Pandas读取数据、查询指定条件的数据、以及数据的详细信息_pandas查看某一列的值及数量-CSDN博客

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