欢迎光临散文网 会员登陆 & 注册

用python简单制作一个快速录入Excel表格的小工具

2021-10-17 18:12 作者:Power_Tea  | 我要投稿

第一版

第二版

窗口版




具体使用方法参照我的视频教程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("您输入的序号不正确请重新输入!")


用python简单制作一个快速录入Excel表格的小工具的评论 (共 条)

分享到微博请遵守国家法律