利用pandas库读取Excle文件中的信息:
import pandas as pd # 使用pandas类库,没有需要pip install pandas
除了pandas库之外,还需要一个openpyxl库,没有这个库程序也运行不了
直接上代码
#自定义输出函数
def print_all(dict):
"""
打印输出全部员工通讯录信息
dict:存放员工通讯录的字典
:return :None
"""
for i in dict.keys():
i_value=dict[i]
value_list = i_value.split('*') #添加在字典中的数据以*分隔,如:张三*13456789098*九江
name = value_list[0]
tel = value_list[1]
city = value_list[2]
print("工号:{} 姓名:{} 电话:{} 地址:{}".format(i,name,tel,city))
# 自定义查找函数
def find_by_id(dict, id):
"""
功能:查找指定工号的员工通讯录信息
:param dict: 员工通讯录的字典
:param id: 需要查找的工号
:return: 成功 True;失败 False
"""
flig = 'False'
li = []
count = 0
for i in dict.keys(): #如果id在字典中,则改变标志位,把对应信息添加到元组中
if i==id:
i_value = dict[id]
value_list = i_value.split('*')
name = value_list[0]
tel = value_list[1]
city = value_list[2]
flig = 'True'
return (flig,name,tel,city,count)
count+=1
else:
return (flig)
#菜单函数
def menu():
print("----------------------------") # 人性化界面
print("欢迎使用通讯录管理系用")
print("[1]显示通讯录信息")
print("[2]增加员工信息")
print("[3]删除员工信息")
print("[4]修改员工信息")
print("[5]查找员工信息")
print("按任意键退出系统")
print("请输入你的操作")
print("----------------------------")
#开始写主函数,在主函数中进行增删改的工作
def main ():
"""
主函数:通过调用函数,实现整个通讯录的功能
"""
while True:
openfile = 'E:\python\通讯录管理系统\员工信息.xlsx' # 这是我自己的文件路径,请运行前修改成你的路径
table = pd.read_excel(openfile, keep_default_na=False)
# 注意 keep_default_na=False 表示读入空数据为'',而不是nan
row = len(table) # 获取表格的行数,“不带标题(表头)” 或者 table.shape[0]
col = table.shape[1] # 获取表格的列数
addressbook = dict() # 创建字典保存读取的表格信息
for i in range(row): # 把table中的员工信息添加到字典中
addressbook[table.iloc[i, 0]] = str(table.iloc[i, 1]) + '*' + str(table.iloc[i, 2]) + '*' + str(
table.iloc[i, 3]) # 用*把姓名,电话,地址分隔开。
menu() #输出菜单界面
n = input("您选择的操作是:")
if n=='1':
"""
显示员工信息功能
通过调用查找函数和显示员工信息函数完成信息的显示
"""
print("您可以输出单个员工信息or全部员工信息")
print("[1]输出单个员工信息,任意按键输出全部员工信息")
munt = input("请输入你的选择:")
if munt == '1':
id = int(input("请输入想要输出的信息的员工编号"))
ars = find_by_id(addressbook, id)
if ars[0] == 'True':
print("已查找到该员工,该员工信息:")
munt = list(ars[1:-1])
print("工号:{} 姓名:{} 电话:{} 地址:{}".format(id,munt[0],munt[1],munt[2]))
else:
print('没有找到该员工信息')
else:
print_all(addressbook)
elif n=='2':
"""
添加功能
默认添加到通讯录末尾
"""
id = int(input("请输入需添加的员工编号:")) # 员工编号是唯一的,需要判断改编号是否已经存在
while id in addressbook.keys():
print("该编号已存在,请重新输入!")
id = int(input("请重新输入需添加的员工编号:"))
name = input("请输入需添加的员工姓名:")
tel = input("请输入需添加的员工电话:")
city = input("请输入员工的分公司地址:")
print("您添加的信息为:工号:{} 姓名:{} 电话:{} 地址:{} ".format(id, name, tel, city))
m = input("按y/Y确认添加,按任意键返回:")
if m == 'y' or m == 'Y':
table.loc[row + 1] = [id, name, tel, city] # 添加到通讯录结尾
table.to_excel(openfile, sheet_name='Sheet1', index=False, header=True) # 保存修改结果
print("添加完成!")
else:
print("您的添加已取消,请继续您的操作。")
elif n=='3':
"""
删除功能
通过对员工的工号的搜索,实现对员工信息的删除
"""
id = int(input("请输入要删除的员工的工号"))
ars = find_by_id(addressbook, id)
if ars[0] == 'True':
print("已查找到该员工,是否删除该员工信息")
munt = list(ars[1:-1])
print("工号:{} 姓名:{} 电话:{} 地址:{}".format(id, munt[0], munt[1], munt[2]))
ans = input("请输入Y/y确认删除")
if ans == 'Y' or ans == 'y':
table = table.drop(ars[-1], axis=0)
table.to_excel(openfile, sheet_name='Sheet1', index=False, header=True) # 保存修改结果
print("删除成功!!请继续操作")
else:
print("您已取消删除操作,请继续操作。")
else:
print("您输入的员工工号不存在,无需删除!")
elif n=='4':
"""
修改信息功能
先搜索到员工信息,然后对其进行修改
"""
id = int(input("请输入要修改的员工工号"))
ars = find_by_id(addressbook, id)
if ars[0] == 'True':
print("已查找到该员工,是否修改该员工信息")
munt = list(ars[1:-1])
print("工号:{} 姓名:{} 电话:{} 地址:{}".format(id, munt[0], munt[1], munt[2]))
ans = input("请输入要修改的选项,1修改电话,2修改地址")
if ans == '1':
tel = input("请输入修改后的内容:")
n = input("真的要修改该信息吗?按y/Y确定。")
if n == 'y' or n == 'Y':
table.iloc[ars[-1], 2] = tel
table.to_excel(openfile, sheet_name='Sheet1', index=False, header=True) # 保存修改结果
print("修改成功!")
elif ans == '2':
city = input("请输入修改后的内容:")
n = input("真的要修改该信息吗?按y/Y确定。")
if n == 'y' or n == 'Y':
table.iloc[ars[-1], 3] = city
table.to_excel(openfile, sheet_name='Sheet1', index=False, header=True) # 保存修改结果
print("修改成功!")
else:
print("您输入的选项不真确,已返回主菜单!")
else:
print('没有找到该员工信息')
elif n=='5':
"""
查找功能
"""
print("请选择您的查找方式:")
xuan = input("[1]:精确查找,[2]:模糊查找")
if xuan == "1":
print("按员工编号查找")
id = int(input("请输入要查找的员工编号:"))
ars = find_by_id(addressbook, id)
if ars[0] == 'True':
print("已查找到该员工,该员工信息为:")
munt = list(ars[1:-1])
print("工号:{} 姓名:{} 电话:{} 地址:{}".format(id, munt[0], munt[1], munt[2]))
else:
print('没有找到该员工信息')
else:
break
print("已退出系统,欢迎再次使用使用!")
#开始运行主函数
if __name__=='__main__':
main()
###
pd.read_excle()读取excle文件中的信息
创一个字典保存读取出的信息,用id作为字典的键,姓名,电话,地址等信息作为字典的值;
修改是利用pandas库中的 iloc[i,j]函数,其中的参数:i为pandas读取出来的表格的第i行,j为读取出来的第j列,通过找到要修改的元素在表格中的行,列位置,然后对其重新赋值,即完成了修改
增加,table.loc[row+1]在读取出来的table数据最后一行添加信息,注意:添加的信息的个数要与表格中上一行的数据个数相等,即上一行有多少个数据,最后一行也要添加相应的数据
删除,table.droop(i,axis=0) axis为1表示删除列,0表示删除行,我们是需要删除第i行的数据,所以axis=0。
把读取到table中的数据输出
print(table)
Excle表格中的数据:
把table中的数据转为字典中:
addressbook = dict() # 创建字典保存读取的表格信息
for i in range(row): # 把table中的员工信息添加到字典中
addressbook[table.iloc[i, 0]] = str(table.iloc[i, 1]) + '*' + str(table.iloc[i, 2]) + '*' + str(
table.iloc[i, 3]) # 用*把姓名,电话,地址分隔开。
print(addressbook)
然后通过字典对数据进行查找处理。还可以自己再添加其他的内容进行完善。