基于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+'!';
相关推荐
点云-激光雷达-Slam-三维牙齿1 小时前
速度起飞 笔记本电脑6G显卡llama运行Qwen3.6 35BA3B MTP 大模型
人工智能·python·电脑·llama
言乐62 小时前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame
从零开始学习人工智能8 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
WWJA王文举9 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
卷无止境10 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha131410 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教10 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
Python私教11 小时前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
卷无止境11 小时前
FastAPI 的Admin面板生态
后端·python
qq_4480111611 小时前
C语言中的动态内存分配
c语言·开发语言·php