引言:Excel是我们办公常见的文档工具,用途很大,也很方便。我们可以使用Python的第三方库pandas,openpyxl等等来操作excel表的读写功能进而实现办公自动化
准备:操作系统:Windows10;python版本:python3.8以上
一、使用pands查看Excel的内容
1. 安装pandas库
首先要安装pands第三方库,使用pip/pip3来安装pands
pip install pands
我这里是在cmd中安装,(看到Successfully关键字就安装成功了)
2. 引用pandas模块中的pd
import pandas as pd
3. 读取excel中的内容
在原始excel表中的数据是下面这样,我以《天龙八部》中的人物为原型虚拟的一些数据(大家看张三、李四、王二麻子的数据也看烦了,换换口味)
使用pd.read_excel()函数来读取excel表中的内容
pd.read_excel()中有很多的函数,我这边列一些常用的参数
pd.read_excel(io='\天龙八部.xlsx', sheet_name='Sheet1', usecols='A:D')
参数名称 | 描述说明 |
---|---|
io | 文件路径或者 ExcelWrite 对象 |
sheet_name | 指定要读取数据的表名称,默认是Sheet1 |
usecols | 解析读取指定列数据 |
这里我演示一下我这个实验,实验目的:
通过pandas模块读取excel内容,并了解使用pd.read_excel()函数读取的内容打印出来是什么样的,呈现出来的内容是什么格式,这个格式如何来应用等等
import pandas as pd
#定义excel表的文件路径
exc_path = 'E:/学习/python/python_to_excel/excel表/天龙八部.xlsx'
#使用pd.read_excel()函数读取"天龙八部.xlsx"的内容,表名为"Sheet1"的内容赋值给df0
df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1")
#打印df0的类型和df0的内容
print(f"{type(df0)}\n{df0}")
运行以后是这样的(我这边用IDE是Sublime Text3,有需要了解怎么安装和一些使用的同志们,可以找我了解一下)
最后得出pd.read_excel()函数读出来的数据类型是一种叫DataFrame的数据结构,它是一个二维标签化的数据结构,类似于一个电子表格或者一个微型的SQL表,亦认为是一个字典对象,熟悉字典的同志可以考虑将它强制为一个字典再去考虑访问里面的值,可能还要列表的知识,下次有空出一期,字典中的列表访问值的文章。当然DataFrame也是一个功能很强大的数据结构,可以作为一个微型的数据库来进行增删查改成我们所需要的数据内容,日后我也出一期专门介绍DataFrame的文章,介绍它的特点,属性和函数等等。
完整的代码:
import pandas as pd
import pandas as pd
#自定义excel表的文件路径
exc_path = "请填写你的excel路径"
#使用pd.read_excel()函数读取excel表的内容,表名为"Sheet1"的内容赋值给df0
df0 = pd.read_excel(io = exc_path, sheet_name = "Sheet1")
#打印df0的类型和df0的内容
print(f"{type(df0)}\n{df0}")
二、使用pandas和openpyxl来写个excel表,添加列数据和追加行数据
1. 安装openpyxl库
要重写excel表的话,需要用到openpyxl的第三方库,使用pip/pip3来安装
pip3 install openpyxl
我这里是用pip3来安装的,安装完成后如下图(看到Successfully关键字就安装成功了)
2. 引用pandas模块和openpyxl模块
from pandas import DataFrame
import pandas as pd
from openpyxl import load_workbook
3. 写excel表创建新表,添加新列,追加新数据
本实验的目的是:
新创建一个表为"天龙八部2"的表,内容和之前表内容一样,然后重新给表添加一个新列为“绝学”,并将此列的值都添加进去,最后给excel表追加一组新的数据
第一步:先创建一个字典,将数据以列表形式给到字典中的值
#创建新的excel表
data = {'姓名':['乔峰','段誉','虚竹','慕容复','段延庆','鸠摩智','逍遥子','丁春秋','游坦之'],
'年龄':[34,30,26,32,54,48,91,73,29],
'门派':['辽人','大理段氏','逍遥派','姑苏慕容氏','大恶人','吐蕃','逍遥派','星宿派','丐帮']}
然后创建一个DataFrame,将data写入
#将data添加到DataFrame赋值给df
df = DataFrame(data)
再找个路径创建一个空的Excel表,名字为“天龙八部2.xlsx”(也可以不用创建,.to_excel()会在本路径中查找此excel表,有此表会重写内容,如果没有此表会自动创建新的Excel表),用pd.to_excel()函数将数据写入到新的excel表中
#填写路径
wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx'
#将data数据写到DataFrame结构中
df = DataFrame(data)
#保存excel表方法,当index=False时不写入索引
df.to_excel(wri_path, index = False)
结果如下
第二步:将上述的excel中的数据保存到DataFrame中后,再给这个DataFrame添加新的列,然后再重写到“天龙八部2.xlsx”这个excel里
先读取数据加入到df0中
#读取excel表的数据赋值给df0这个DataFrame中
wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx'
df0 = pd.read_excel(wri_path)
然后将新表头的数据用添加方式添加到df0中(有点类似字典的添加方法)
#直接增加新列头和新的列数据
df0['绝学'] = ['降龙十八掌','六脉神剑','北冥神功','斗转星移','一阳指','小无相功','北冥神功','化功大法','易筋经']
最后重写excel表
#将df0写入到Excel中,这里的startcol = 0是写入的起始列为第一列,也可以不要,默认为第一列
df0.to_excel(wri_path, index = False, sheet_name = 'Sheet1', startcol = 0)
结果如下:
上图明显比之前的excel多了一列“绝学”的列数据
第三步:将上述的excel打开,追加一行新数据,然后关闭excel即可
打开excel文件选择工作表
wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx'
#打开excel文件
excel = load_workbook(wri_path)
#选择工作表Sheet1
sheet = excel.get_sheet_by_name('Sheet1')
找到追加行位置
#追加定位位置,在原excel上找到最下面的行数据并定位到它的最后一行数据的第二行
sheet.max_row + 1
将新数据追加到excel中
#追加新数据
add_data = ['岳老三', 54, '大恶人' , '鳄嘴剪']
sheet.append(add_data)
保存关闭excel,不然运行程序时会报错
#保存并关闭Excel表
excel.save(wri_path)
excel.close()
运行结果如下:
打开excel后,就看到excel的Sheet1表中新增这条行数据,为了演示这条数据是追加上去而不是重写的,我将上面的原始数据做了简单的格式处理,发现上述的原始数据没有改变格式,说明数据追加成功。
上述完整代码:
from pandas import DataFrame
import pandas as pd
from openpyxl import load_workbook
#第一步、创建新表
#创建新的excel表数据
data = {'姓名':['乔峰','段誉','虚竹','慕容复','段延庆','鸠摩智','逍遥子','丁春秋','游坦之'],
'年龄':[34,30,26,32,54,48,91,73,29],
'门派':['辽人','大理段氏','逍遥派','姑苏慕容氏','大恶人','吐蕃','逍遥派','星宿派','丐帮']}
#将data添加到DataFrame赋值给df
df = DataFrame(data)
#填写路径
wri_path = '请选择你的excel表路径'
#将data数据写到DataFrame结构中
df = DataFrame(data)
#保存excel表方法,当index=False时不写入索引
df.to_excel(wri_path, index = False)
#第二步、在原表上添加新列
#读取excel表的数据赋值给df0这个DataFrame中
wri_path = 'E:/学习/python/python_to_excel/excel表/天龙八部2.xlsx'
df0 = pd.read_excel(wri_path)
#直接增加新列头和新的列数据
df0['绝学'] = ['降龙十八掌','六脉神剑','北冥神功','斗转星移','一阳指','小无相功','北冥神功','化功大法','易筋经']
#将df0写入到Excel中,这里的startcol = 0是写入的起始列为第一列,也可以不要,默认为第一列
df0.to_excel(wri_path, index = False, sheet_name = 'Sheet1', startcol = 0)
#第三步、追加新数据
#打开excel文件
excel = load_workbook(wri_path)
#选择工作表Sheet1
sheet = excel.get_sheet_by_name('Sheet1')
#追加定位位置,在原excel上找到最下面的行数据并定位到它的最后一行数据的第二行
sheet.max_row + 1
#追加新数据
add_data = ['岳老三', 54, '大恶人' , '鳄嘴剪']
sheet.append(add_data)
#保存并关闭Excel表
excel.save(wri_path)
excel.close()
扩展汇总请看:·办公自动化(一)-python操作excel表(三)-CSDN博客
参考:
1. Pandas 中的 read_excel() 读取 excel 数据详细参数用法_pd.read_excel-CSDN博客
2. https://www.cnblogs.com/hhaostudy/p/16025398.html
3. python 追加到excel_mob64ca12d59fe5的技术博客_51CTO博客
以上使用方法和函数参考官方文档和以上专业博客,如有雷同侵权,请联系我处理,感谢各位同志的支持