基于python的excel检查和读写软件

软件版本:python3.6

窗口和界面gui代码:

class mygui:

    def _init_(self):
        pass

    
    def run(self):

        root = Tkinter.Tk()

        root.title('ExcelRun')
        max_w, max_h = root.maxsize()
        root.geometry(f'500x500+{int((max_w - 500) / 2)}+{int((max_h - 300) / 2)}')  # 居中显示
        root.resizable(width=False, height=False)

        # 标签组件
        label = Tkinter.Label(root, text='from_xlsx:', font=('宋体', 10))
        label.place(x=40, y=35)

        # 输入框控件
        entry_text = Tkinter.StringVar()
        entry = Tkinter.Entry(root, textvariable=entry_text, font=('FangSong', 10), width=40, state='readonly')
        entry.place(x=120, y=38)

        idlabel1 = Tkinter.Label(root, text='ID:', font=('宋体', 10))
        idlabel1.place(x=70, y=58)
        
        fpath1_num1 = Tkinter.StringVar()
        entry2 = Tkinter.Entry(root, textvariable=fpath1_num1, font=('FangSong', 10), width=10)
        entry2.place(x=120, y=58)
        
        idlabel2 = Tkinter.Label(root, text='score:', font=('宋体', 12))
        idlabel2.place(x=240, y=53)

        fpath1_num2 = Tkinter.StringVar()
        entry3 = Tkinter.Entry(root, textvariable=fpath1_num2, font=('FangSong', 10), width=10)
        entry3.place(x=300, y=58)

        label2 = Tkinter.Label(root, text='to_xls:', font=('宋体', 12))
        label2.place(x=40, y=78)
        
        filepath2 = Tkinter.StringVar()
        filepath2entry = Tkinter.Entry(root, textvariable=filepath2, font=('FangSong', 10), width=40, state='readonly')
        filepath2entry.place(x=120, y=78)
        
        id2label1 = Tkinter.Label(root, text='ID:', font=('宋体', 10))
        id2label1.place(x=70, y=98)
        
        filepath2_num1 = Tkinter.StringVar()
        filepath2_num1entry = Tkinter.Entry(root, textvariable=filepath2_num1, font=('FangSong', 10), width=10)
        filepath2_num1entry.place(x=120, y=98)

        id2label2 = Tkinter.Label(root, text='loc:', font=('宋体', 12))
        id2label2.place(x=240, y=93)
        
        filepath2_num2 = Tkinter.StringVar()
        filepath2_num2entry = Tkinter.Entry(root, textvariable=filepath2_num2, font=('FangSong', 10), width=10)
        filepath2_num2entry.place(x=300, y=98)

        button = Tkinter.Button(root, text='选择路径', command=lambda: self.get_path(entry_text,outputtext))
        button.place(x=410, y=30)
        button_path2 = Tkinter.Button(root, text='选择路径', command=lambda: self.get_path(filepath2,outputtext))
        button_path2.place(x=410, y=78)
        
        button2 = Tkinter.Button(root, text='重名检查', command=lambda: self.get_path2(entry_text,outputtext,fpath1_num1))
        button2.place(x=410, y=128)

        button3 = Tkinter.Button(root, text='成绩转移', command=lambda: self.get_path3(\
            entry_text.get(),int(fpath1_num1.get()),int(fpath1_num2.get()),\
            filepath2.get(),int(filepath2_num1.get()),int(filepath2_num2.get()),outputtext))
            
        button3.place(x=410, y=158)
        
        button4 = Tkinter.Button(root, text='名单核查', command=lambda: self.get_path4(\
            entry_text.get(),int(fpath1_num1.get()),\
            filepath2.get(),int(filepath2_num1.get()),outputtext))
            
        button4.place(x=410, y=188)

        outputtext = Text(root, height=20, width=40)
        # 将多行输入文本放入(pack)窗口中
        outputtext.place(x=120, y=120)
        var='a' 
        lst=[chr(ord(var)+i) for i in range(26)]
        for i in range(0,26):
            outputtext.insert("end",lst[i]+'  '+str(i)+'\t')
            if (i+2)%3==1:
                outputtext.insert("end",'\n')
        root.mainloop()

f=mygui()

excel检查和读写代码:

from xlrd import open_workbook
from xlutils.copy import copy
import xlrd
import os
import random

class zuoye__2_excel:
    def run(self,path1,p1num1,p1num2,path2xls,p2num1,p2num2):
        dic={}
        dic2={}

        rb2 = open_workbook(path1)
        rs2 = rb2.sheet_by_index(0)

        nrows = rs2.nrows
        ncols = rs2.ncols
         
        wb = copy(rb2)

        #通过get_sheet()获取的sheet有write()方法
        ws = wb.get_sheet(0)
        #ws.write(0, 0, 'changed!')
        # 
        for i in range(0, nrows):
        #########################################################################################################
          id=rs2.cell_value(i,p1num1)
          id=int(id)
          sc=rs2.cell_value(i,p1num2)
          dic[id]=sc
          #INDEX=rs.cell_value(i,2)
        #########################################################################################################
          #name=rs.cell_value(i,1)
        #########################################################################################################


        rb2 = open_workbook(path2xls)
        rs2 = rb2.sheet_by_index(0)

        nrows2 = rs2.nrows
        ncols2 = rs2.ncols

        wb2 = copy(rb2)

        #通过get_sheet()获取的sheet有write()方法
        ws2 = wb2.get_sheet(0)
        #ws.write(0, 0, 'changed!')

        for i in range(0, nrows2):
          id1=rs2.cell_value(i,p2num1)
          #id3= id1.replace(" ", "")
          if type(id1)==str or not id1>0 :
            continue
          id2=int(id1)
          #id2=''.join([i for i in id3 if  i.isdigit()])
          #name2=rs2.cell_value(i,6)

          #dic2[id2]=i
          #dic[id2]=rs2.cell_value(i,5)


          if  id2  in dic:
        #########################################################################################################
            ws2.write(i,p2num2, dic[id2])
          else:
            print(id2)
        filepath='w'+str(random.randint(10000, 30000))+'.xls'
        if  os.path.exists(filepath):
            print('文件存在!')
            return '文件存在,重新保存!'
        else:
            wb2.save(filepath)
            return '文件保存到:'+filepath+'!';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/267063.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python学习路线 - Python语言基础入门 - Python基础综合案例 - 数据可视化 - 动态柱状图

Python学习路线 - Python语言基础入门 - Python基础综合案例 - 数据可视化 - 动态柱状图 基础柱状图构建案例效果通过Bar构建基础柱状图反转x和y轴数值标签在右侧 基础时间线柱状图绘制创建时间线创建时间线自动播放时间线设置主题 动态GDP柱状图绘制需求分析列表的sort方法带名…

分巧克力c语言

分析:分巧克力,把每一种大小列举出来,在对巧克力分解,在加上所以的分解块数,在和人数比较,如果够分,就保存这一次的结果,在增大巧克力,如果不够分了,就打印上…

「Verilog学习笔记」并串转换

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 串并转换操作是非常灵活的操作,核心思想就是移位。串转并就是把1位的输入放到N位reg的最低位,然后N位reg左移一位,在把1位输入放到左移后…

【并发设计模式】聊聊两阶段终止模式如何优雅终止线程

在软件设计中,抽象出了23种设计模式,用以解决对象的创建、组合、使用三种场景。在并发编程中,针对线程的操作,也抽象出对应的并发设计模式。 两阶段终止模式- 优雅停止线程避免共享的设计模式- 只读、Copy-on-write、Thread-Spec…

计算机视觉基础(10)——深度学习与图像分类

前言 传统视觉算法采用手工设计特征与浅层模型,而手工设计特征依赖于专业知识,且泛化能力差。深度学习的出现改变了这一状况,为视觉问题提供了端到端的解决方案。在之前的课程中,我们已经学习了图像分类的传统知识。在本节课中&am…

Go 泛型之类型参数

Go 泛型之类型参数 文章目录 Go 泛型之类型参数一、Go 的泛型与其他主流编程语言的泛型差异二、返回切片中值最大的元素三、类型参数(type parameters)四、泛型函数3.1 泛型函数的结构3.2 调用泛型函数3.3 泛型函数实例化(instantiation&…

RPN网络在图像处理中的应用

RPN(Region Proposal Network,区域建议网络)是深度学习中用于目标检测的关键组件之一,它通常与后续的目标检测网络(如Fast R-CNN、Faster R-CNN等)结合使用。RPN的主要作用是生成候选目标区域,从…

需求分析工程师岗位的职责描述(合集)

需求分析工程师岗位的职责描述1 职责: 1,负责需求调研,对需求进行分析,编写解决方案、需求规格说明书等 2,根据需求制作原型,并负责原型展示以及客户沟通等工作 3,负责向技术团队精确地传达业务…

C++力扣题目344--反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s ["h","e…

【Linux系统基础】(2)在Linux上部署MySQL、RabbitMQ、ElasticSearch、Zookeeper、Kafka、NoSQL等各类软件

实战章节:在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,…

带您了解目前AI在测试领域能够解决的那些问题

AI在测试领域主要应用场景 话不多说,直接给结论: 接口测试脚本的自动生成和校验(依赖研发ai工具)测试用例的自动生成UI自动化测试脚本的自动生成和校验测试文档的自动生成快速了解初涉的业务领域 关于ai对研发和测试的整体影响…

基于电商场景的高并发RocketMQ实战-NameServer内存中核心数据模型分析、内核级Producer发送消息流程

🌈🌈🌈🌈🌈🌈🌈🌈 【11来了】文章导读地址:点击查看文章导读! 🍁🍁🍁🍁🍁🍁&#x1f3…

统计和绘图软件GraphPad Prism mac功能特点

GraphPad Prism mac是一款专业的统计和绘图软件,主要用于生物医学研究、实验设计和数据分析。 GraphPad Prism mac功能和特点 数据导入和整理:GraphPad Prism 可以导入各种数据格式,并提供直观的界面用于整理、编辑和管理数据。用户可以轻松…

Django开发1

Django开发1 初识Django1.安装django2.创建项目2.1 在终端2.2 Pycharm 3. 创建app4.快速上手4.1 再写一个页面4.2 templates模板4.3 静态文件4.3.1 static目录4.3.2 引用静态文件 5.模板语法//Django开发案例:联通新闻中心6.请求和响应案例:用户登录7.数…

[java] 注释

目录 单行注释: 多行注释: 文档注释: doc标签 单行注释: 多行注释: 注意多行注释不能嵌套多行注释: 文档注释: 注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类。 doc标签 标签 描述 示例 …

“抓取再吸取的连续操作学习”研究工作发表于IEEE Trans. on Robotics:仿人手的柔性抓取,超人手的指背吸取!

长期以来,抓取一直被认为是机器人操作中一项重要而实际的任务。然而,实现对不同物体的稳健和有效的抓取具有挑战性,因为它涉及夹具设计、感知、控制和学习等。最近基于学习的方法在抓取各种新物体方面表现出优异的性能。然而,这些…

C语言用两个函数求最大公约数和最小公倍数

目录 1【c语言】(函数)写两个函数,分别求两个整数的最大公约数和最小公倍数。在主函数中输入两个数,分别调用这两个函数,并输出结果 2代码: 3运行代码: 4总结: 1【c语言】(函数)写两个函数,分别求两个整数的最大公约数和最小公倍数。在主函数中输入两…

C++初阶——类和对象

呀哈喽,我是结衣 C入门之后,我们就进入了C的初阶的学习了,在了解类和对象之前,我们还是先了解,面向过程和面向对象的初步认识。 在本篇博客中,我们要讲的内容有 1.面向过程和面向对象初步认识 2.类的引入 3…

浅析海博深造

文章目录 深造作用 留学种类 选专业 择校 申请流程 申请方式 深造作用 1、个人能力提升(学术专业、语言、新文化或新生活方式) 2、更好的职业发展(起点更高、结交新朋友或扩大社交圈) 3、北京上海落户优惠 4、海外居留福…

抖音小店无货源怎么做?全新玩法,全新的思路!

大家好,我是电商糖果 抖音小店已经不能拍单了,无货源模式是不是不能做了? 自从不能拍单的规则出来之后,问这个问题的朋友特别多。 糖果做无货源电商七年了,做过天猫,京东,闲鱼,20…