精华内容
下载资源
问答
  • '删除excel AppWokBookOld.Sheets(1).Rows("5:6").Delete ’复制新excel AppWokBookNew.Sheets(1).Rows("5:8").Copy '粘贴新excel到旧excel AppWokBookOld.Sheets(1).Rows("5").Paste...
  • excel的使用

    2012-11-25 17:06:01
    如果用得到,你还可以利用EXCEL来完成行列式、矩阵的各种计算,进行简单的积分运算,利用迭代求函数值(如x^2=x^7+4,可用迭代方法求x值),等等,凡是涉及计算方面的事,找EXCEL来帮忙,它一定会给你一个满意的答案...
  • 8.3.4 删除工作日程安排中的不相关内容 8.3.5 快速查看模板中的公式 经验分享 多种方式的备忘手段 为日程表添加图片背景 8.3.6 在备忘录中引用其他工作表的单元格 专家点拨 商务交往中道歉的技巧 chapter 09企划书的...
  • 注意:通过标签的bordercolor属性只能改变数据部分表格的边框颜色,如果要同时改变标题部分和外层表格的边框颜色,则需要通过修改 wabacus_system.css文件中的.cls-data-th-list、.cls-data-td-list的样式定义...
  • python小项目--信息管理系统---新手实践

    千次阅读 热门讨论 2021-02-10 19:57:29
    搜索时,界面确实不怎么美观,家庭住址这一栏也直接到了下一,时间原因,也懒得修改了。 修改: 先选择要修改的信息 改动: 信息覆盖: 删除和修改的界面几乎一样一个多选的对话框,这里不展示了。 导出表格:...

    一,功能简介

    除最基本的增,删,改,查,多加了一个导出为excel表格的功能。比较适合刚学完python练习基本语言用。代码中大部分都是使用基本语法来处理数据。
    在这里插入图片描述
    新建和查看
    在这里插入图片描述

    在这里插入图片描述
    搜索时,界面确实不怎么美观,家庭住址这一栏也直接到了下一行,时间原因,也懒得修改了。
    在这里插入图片描述
    修改:
    先选择要修改的信息
    在这里插入图片描述
    改动:
    在这里插入图片描述
    信息覆盖:
    在这里插入图片描述
    删除和修改的界面几乎一样一个多选的对话框,这里不展示了。
    导出表格:其中C:/Users/acer/Desktop/信息.xlsx为默认路径,选择导出功能时会自动填入
    在这里插入图片描述

    在这里插入图片描述

    二,代码

    个人小白,python学的比较浅,GUI也是用的自带模块easygui
    运行时会生成名为employee_date.json的文件来存储信息
    main.py:

    import easygui
    import function as fun
    while True:
        main_menu = easygui.buttonbox('\t\t\t\t菜单界面', title='信息管理系统',
                                      choices=['新建信息', '查看所有信息',
                                               '搜索信息', '修改信息', '删除信息',
                                               '导出为excel表格'])
        if main_menu == '新建信息':
            try:
                fun.new_employee()
            except FileNotFoundError:
                fun.new_filename()
        elif main_menu == '查看所有信息':
            try:
                fun.data_all()
            except FileNotFoundError:
                fun.tip_not_found_file()
        elif main_menu == '修改信息':
            try:
                fun.modify_employee()
            except FileNotFoundError:
                fun.tip_not_found_file()
        elif main_menu == '删除信息':
            try:
                fun.del_data()
            except ValueError:
                fun.del_data2()
            except FileNotFoundError:
                fun.tip_not_found_file()
        elif main_menu == '搜索信息':
            try:
                fun.search_data()
            except FileNotFoundError:
                fun.tip_not_found_file()
        elif main_menu == '导出为excel表格':
            try:
                fun.export_to_excel()
            except FileNotFoundError:
                fun.tip_not_found_file()
        elif main_menu == None:
            break
    
    

    function.py:

    import json
    import openpyxl
    import easygui
    import os
    list_employee = []
    filename = 'employee_date.json'
    
    
    def new_filename():
        employee = new_tools1()
        if employee == None:
            return
        tem_list = []
        tem_list.append(employee)
        with open(filename, 'w') as f:
            json.dump(tem_list, f, indent=4)
            f.close()
        easygui.msgbox(msg='Add success', title='tip', ok_button='返回')
    
    
    def new_employee():
        with open(filename) as f:
            list_employee = json.load(f)
            f.close()
        employee = new_tools1()
        if employee == None:
            return
        with open(filename) as f:
            list_employee = json.load(f)
            list_employee.append(employee)
            f.close()
        with open(filename, 'w') as f:
            json.dump(list_employee, f, indent=4)
            f.close()
        easygui.msgbox(msg='Add success', title='tip', ok_button='返回')
    
    
    def new_tools1():
        menu1 = easygui.multenterbox('新建信息', '新建信息功能',
                                     ['姓名', '性别(男/女)', '联系方式', '家庭住址'])
        if menu1 == None:
            return menu1
        while len(menu1[1]) != 1 or len(menu1[2]) != 11 or not menu1[2].isdigit():
            menu1 = easygui.multenterbox('格式有误!重新输入', '新建信息功能',
                                         ['姓名', '性别(男/女)', '联系方式', '家庭住址'])
            if menu1 == None:
                return menu1
        employee = {
            'name': menu1[0],
            'gender': menu1[1],
            'phone': menu1[2],
            'address': menu1[3]
        }
        return employee
    
    
    def data_all(w=True):
        with open(filename) as f:
            data = json.load(f)
            f.close()
        if len(data) == 0:
            easygui.msgbox('NOT FOUND MESSAGES!')
            return 1
        value = ['姓名', '性别', '联系方式', '家庭住址']
        i = 0
        while i < len(data):
            for v in data[i].values():
                value.append(v)
            i = i+1
        val_p = ''
        for a in range(len(value)):
            val_p += str(value[a])+'\t\t'
            if a % 4 == 3:
                val_p += '\n'
        if w == False:
            return val_p
        easygui.msgbox(val_p, title='全部信息')
    
    
    def export_to_excel():
        # 定义要写入的行和列的值
        with open(filename) as f:
            list_employee = json.load(f)
                # 定义excel的sheet_name  "xlsx格式测试表 "
            f.close()
        workbook = openpyxl.Workbook()
        sheet = workbook.active
        sheet_name = "xlsx格式表"
        sheet.title = sheet_name
        path = 'C:/Users/acer/Desktop/信息.xlsx'
        path = easygui.enterbox('导出路径', title='选择路径', default=path)
        if path == None:
            return
        temporary_val_k = ['姓名', '性别', '联系方式', '家庭住址']
        for a in range(0, len(temporary_val_k)):
            sheet.cell(row=1, column=a+1, value=temporary_val_k[a])     #打印表头
        i = 0
        while i < len(list_employee):    #0~len(list)   i:0~4
            temporary_val = []
            for val in list_employee[i].values():     #list_employee is a list ,每个值为字典
                temporary_val.append(val)   #此时temporary_val 是列表,有四个值
            for j in range(len(temporary_val)):
                sheet.cell(i+2, j+1, temporary_val[j])
            i = i+1
        workbook.save(path)
        easygui.msgbox(msg='导出成功', title='tip')
    
    
    def search_data():
        val_p = data_all(w=False)
        if val_p == 1:
            return
        find_data = easygui.enterbox(val_p,
                                     title='信息搜索')
        if find_data == None:
            return
        with open(filename) as f:
            list_employee = json.load(f)
            f.close()
        value = ['姓名', '性别', '联系方式', '家庭住址']
        i = len(value)
        s = ''
        for category in ['name', 'gender', 'phone', 'address']:
            for dict_employee in list_employee:
                if find_data in dict_employee[category]:
                    for element in dict_employee.values():
                        value.append(element)
        if len(value) == 4:
            value.append('NOT FOUND!!')
        for a in range(len(value)):
            s += value[a]+'\t\t'
            if a%i == 3:
                s += '\n'
        easygui.msgbox(msg=s, title='信息检索', ok_button='返回')
    
    
    def del_data():
        tem = del_mod(m='选择要删除的信息', t='选择删除信息')
        if tem == None:
            return
        for t in range(len(tem)):
            num = ''.join([x for x in tem[t] if x.isdigit()])
            with open(filename) as f:
                list_employee = json.load(f)
                for employee in list_employee:
                    if employee['phone'] == num:
                        list_employee.remove(employee)
                f.close()
            with open(filename, 'w') as f:
                json.dump(list_employee, f, indent=4)
                f.close()
        message = '成功删除:\n'
        for a in range(len(tem)):
            message += tem[a]+'\n'
        easygui.msgbox(message, title='tip')
    
    
    def del_data2():    #解决只有一个信息时的删除错误
        with open(filename) as f:
            list_employee = json.load(f)
            f.close()
        a = '成功删除:\n'
        for a_p in list_employee[0].values():
            a += a_p
        os.remove(filename)
        easygui.msgbox(a, title='tip')
    
    
    def modify_employee():
        with open(filename) as f:
            list_employee = json.load(f)
            f.close()
        list_tem = []
        value = ['姓名', '性别', '联系方式', '家庭住址']
        tem = del_mod(m='选择要修改的信息', t='修改信息')  #tem is a list
        if tem == None:
            return
        for d in tem:
            for n in range(len(d)):
                t = d[n]
                if t == '男' or t == '女':    #别问为什么要用中间变量t,直接用d[n]不是更简单吗?直接用d[n]不行,不是预期结果
                    list_tem.append(d[:n].strip())
                    list_tem.append(d[n])
                    list_tem.append(d[n+3:n+14])
                    list_tem.append(d[n+14:].strip())
        num_list = get_subscript(list_tem)     #若选择要修改的人员信息有两个,此时list_tem == 8,num_list存储要修改信息的下标
        list_tem_a = []
        record = 0
        for a in range(len(list_tem)):  #run twice
            list_tem_a.append(list_tem[a])  #给list_tem_a添加list_tem,当加入四个时说明为一个人的信息
            if a % len(value) == len(value)-1:  #if a%4 == 3
                ret = easygui.multenterbox('', '信息修改', value, list_tem_a)
                if ret == None:
                    return
                while len(ret[1]) != 1 or len(ret[2]) != 11 or not ret[2].isdigit():
                    ret = easygui.multenterbox('格式有误', '信息修改', value, list_tem_a)   #ret 返回修改过的信息
                    if ret == None:
                        return
                list_employee[num_list[record]]['name'] = ret[0]
                list_employee[num_list[record]]['gender'] = ret[1]
                list_employee[num_list[record]]['phone'] = ret[2]
                list_employee[num_list[record]]['address'] = ret[3]
                record = record + 1
                list_tem_a = []
        with open(filename, 'w') as f:
            json.dump(list_employee, f, indent=4)
            f.close()
        easygui.msgbox('修改成功', title='tip')
    
    
    def get_subscript(list_tem):
        num_list = []
        with open(filename) as f:
            list_employee = json.load(f)
            f.close()
        for n in range(len(list_tem)):
            if n%4 == 2:
                #list_tem[n] == phone
                for num in range(len(list_employee)):
                    if list_employee[num]['phone'] == list_tem[n]:
                        num_list.append(num)
        return num_list
    
    
    def del_mod(m, t):
        i = 0
        s = ''
        val_p = []
        value = []
        with open(filename) as f:
            data = json.load(f)
            f.close()
        a = data
        if len(data) == 0:
            easygui.msgbox('NOT FOUND MESSAGES!')
            return
        while i < len(data):
            for v in data[i].values():
                value.append(str(v) + '  ')
            i = i + 1
        for i in range(len(value)):
            s += value[i]
            if i % 4 == 3:
                val_p.append(s)
                s = ''
        if len(a) == 1:
            return val_p
        tem = easygui.multchoicebox(msg=m, title=t,
                                    choices=val_p)
        return tem      #返回要修改的原值
    
    
    def tip_not_found_file():
        easygui.msgbox('NOT FOUND MESSAGES!', 'tip')
    
    

    仅供学习交流!

    三,一些废话

    总共不到300行,python的确是一门简洁的语言,用c的话估计冲着五六百行就去了,python作为辅助语言不错,但不建议作为第一语言来使用。隐去了很多我们不需要考虑的内容。

    主要参考资料:
    1,《Python编程从入门到实践》,人民邮电出版社
    2,python简单图形界面GUI入门——easygui
    https://blog.csdn.net/mingqi1996/article/details/81272621

    展开全文
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    表格数据投影:投影EXCEL表的坐标数据到MapGis中,可以投影选中的部分数据,亦可以投影表格的全部数据。 距离角度量算:即显图上距离,总长度,直线角度。 距离角度修改:线按长度、角度修改。 面积量算:量算面积。...
  • 3.新增了删除信息菜单,删除信息菜单包括删除学生,删除班级,删除级别,每一级的删除并不简单,删除相应的级别,对应级别里的所有班级和学生都会被删除,所以我还是验证了很多遍的,功能基本实现,能够完全删除,...
  • 这个单词是由哪个单词怎么演变而来的?它的原型单词(Lemma)是什么? 可能大家注意到上表有一个 Exchange 字段,它就是来做这个事情的,这是本词典一大特色之一,格式如下: 类型1:变换单词1/类型2:变换单词2 比如 ...
  • arcgis工具

    2012-10-22 22:37:31
    Ctrl+A:方位 Ctrl+F:偏转 Ctrl+L:长度 Ctrl+D:X,Y增量 Ctrl+G:方位/长度 Ctrl+P:平行 Ctrl+E:垂直 Ctrl+T:切线 Ctrl+Delete:删除草图 F2:完成草图 F6:绝对X,Y坐标 F7:线段偏转 T:显示容限 已经输入的...
  • 群员监控Window中,鼠标右键单击左侧Session列表某出现拒收消息,可以在Mac上完全拒收此群消息,避免打扰。 右侧列表是依次是昵称、相关发言时间与条数、违规言论、拼多多砍一刀。 此功能暂时属于实验性质。 ...
  • 提问的智慧 How To Ask Questions The Smart Way ... Raymond, Rick Moen 本指南英文版版权为 Eric S.... ...Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin, 2015 by Ryan Wu 本中文指南是基于原文 3.10 版...
  • 可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件 DBX:DataBearn图像;Microsoft Visual FoxPro表格文件 DCT:Microsoft Visual FoxPro数据库容器 DCU:Delphi编译单元文件 DCX:Microsoft Visual...
  • -增加示例-如何将Grid控件导出为Excel(data\grid_excel_run.aspx)(feedback:503684912)。 -如果TreeNode的属性Enabled="false",则此项变灰并且不会被选中(feedback:your568)。 -修正TreeNode的属性NavigateUrl不...
  • ExtAspNet_v2.3.2_dll

    2010-09-29 14:37:08
    -增加示例-如何将Grid控件导出为Excel(data\grid_excel_run.aspx)(feedback:503684912)。 -如果TreeNode的属性Enabled="false",则此项变灰并且不会被选中(feedback:your568)。 -修正TreeNode的属性NavigateUrl不...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就了。 gh0st v3.6 源码 - 可下断点调试! 如题。详细见源码。 GMem 内存管理单元源码。GMem.cpp...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

excel怎么删除部分行