用python简单制作一个快速录入Excel表格的小工具
第一版
第二版
窗口版
具体使用方法参照我的视频教程https://www.bilibili.com/video/BV1Ch411b7Zx/
这个工具可以实现不用鼠标更快的录入数据,代码如下:
#! /usr/bin/python3
# coding=utf-8
import os
import xlwt
# noinspection PyUnresolvedReferences
import xlrd
card_list = []
def show_menu():
"""显示菜单"""
print("*" * 50)
print("")
print("欢迎使用 【名册管理系统】 V 1.0")
print("")
print("选择 【1】 新增名册")
print("选择 【2】 显示全部")
print("选择 【3】 搜索名册")
print("")
print("选择 【0】 退出系统")
print("")
print("*" * 50)
def new_card():
"""
新增名册信息
"""
print("-" * 50)
print("新增名册")
# 1.提示用户输入名片信息
name_str = input("请输入姓名:")
phone_str = input("请输入电话:")
qq_str = input("请输入身份证号码:")
email_str = input("请输入住址:")
# 2.使用户输入的信息建立一个名片字典
card_dict = {"name": name_str, "phone": phone_str,
"id": qq_str, "add": email_str}
# 3.将名片字典添加到列表中
card_list.append(card_dict)
# print(card_list) #打印名单出来看一下
# 4.提示用户添加成功
print("添加%s的名片成功!" % name_str)
def show_all():
"""
显示所有名册
:return: 把值返回给函数
"""
print("-" * 50)
print("显示所有名册")
if len(card_list) == 0:
print("当前没有任何名册记录,请使用新增功能添加名册!")
return
# 打印表头
for name in ["姓名", "电话", "身份证号码", "住址"]:
print(name, end="\t\t")
print("")
# 打印分割线
print("=" * 50)
# 遍历列表依次输出字典信息
for card_dict in card_list:
print("%s\t%s\t%s\t%s\t" % (card_dict["name"],
card_dict["phone"], card_dict["id"], card_dict["add"]))
def search_card():
"""
搜索名册信息
"""
print("-" * 50)
print("搜索名册")
# 1.提示用户输入要搜索的姓名
find_name = input("请输入要搜索的姓名:")
# 2.遍历名片列表查询要搜索的姓名,如果没有找到需要提示用户
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t电话\t\t身份证号码\t\t住址")
print("=" * 50)
print("%s\t%s\t%s\t%s\t" % (card_dict["name"],
card_dict["phone"], card_dict["id"], card_dict["add"]))
# 针对找到的名片记录执行修改和删除的操作
deal_card(card_dict)
break
else:
print("抱歉没有找到%s" % find_name)
def deal_card(find_dict):
"""
处理查找到的名册
:param find_dict: 查找到的名册
"""
action_str = input("请选择要执行的操作 "
"[1] 修改 [2] 删除 [0] 返回上一级")
if action_str == "1":
find_dict["name"] = input_card_info(find_dict["name"], "姓名:")
find_dict["phone"] = input_card_info(find_dict["phone"], "电话:")
find_dict["身份证号码"] = input_card_info(find_dict["id"], "身份证号码:")
find_dict["住址"] = input_card_info(find_dict["add"], "住址:")
print("修改名册成功")
elif action_str == "2":
card_list.remove(find_dict)
print("删除名册成功!")
def input_card_info(dict_value, tip_message):
"""
输入名片信息
:param dict_value: 字典中原有的值
:param tip_message: 输入的提示文字
:return: 如果用户输入了内容,就返回内容,否则返回字典中原有的值
"""
result_str = input(tip_message)
if len(result_str) > 0:
return result_str
else:
return dict_value
def w_excel_cards():
"""
导出名单到Excel
"""
# wb = xlwt.Workbook()
wb = xlwt.Workbook(encoding='utf-8')
ws = wb.add_sheet("名册信息")
# 3个参数分别为行号,列号,和内容
# 需要注意的是行号和列号都是从0开始的
ws.write(0, 0, "姓名")
ws.write(0, 1, "电话")
ws.write(0, 2, "身份证号码")
ws.write(0, 3, "住址")
# 循环遍历写入Excel
excel_row = 1
for card_dict in card_list:
ws.write(excel_row, 0, card_dict["name"])
ws.write(excel_row, 1, card_dict["phone"])
ws.write(excel_row, 2, card_dict["id"])
ws.write(excel_row, 3, card_dict["add"])
excel_row += 1
# 设置单元格宽度,也就是某一列的宽度
ws.col(0).width = 2222
ws.col(1).width = 3333
ws.col(2).width = 5555
ws.col(3).width = 9999
# 保存excel文件
wb.save('./名册信息.xls')
# print("导出数据成功!!!")
def r_excel_cards():
file_path = "./名册信息.xls"
# 先打开一个文件
wb = xlrd.open_workbook(file_path)
# 获取第一个表
sheet1 = wb.sheet_by_index(0)
# 总行数
nrows = sheet1.nrows
# 后面就通过循环即可遍历数据了
# 取数据
for i in range(1, nrows):
name_str = sheet1.cell_value(i, 0)
phone_str = sheet1.cell_value(i, 1)
qq_str = sheet1.cell_value(i, 2)
email_str = sheet1.cell_value(i, 3)
# 2.使用户输入的信息建立一个名片字典
card_dict = {"name": name_str, "phone": phone_str,
"id": qq_str, "add": email_str}
# 3.将名片字典添加到列表中
card_list.append(card_dict)
if not os.access("./名册信息.xls", os.F_OK):
wb = xlwt.Workbook(encoding='utf-8')
ws = wb.add_sheet("名册信息")
# 3个参数分别为行号,列号,和内容
# 需要注意的是行号和列号都是从0开始的
ws.write(0, 0, "姓名")
ws.write(0, 1, "电话")
ws.write(0, 2, "身份证号码")
ws.write(0, 3, "住址")
wb.save('./名册信息.xls')
else:
r_excel_cards()
while True:
# 显示菜单
show_menu()
action_str = input("请选择希望执行的操作:")
print("您选择的操作是 【%s】" % action_str)
if action_str in ["1", "2", "3"]:
if action_str == "1":
new_card()
elif action_str == "2":
show_all()
elif action_str == "3":
search_card()
elif action_str == "0":
print("欢迎再次使用【名册管理系统】")
w_excel_cards()
break
else:
print("您输入的序号不正确请重新输入!")