利用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)
然后通过字典对数据进行查找处理。还可以自己再添加其他的内容进行完善。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)