加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python GUI编程封装代码为exe应用窗口

发布时间:2020-12-20 10:28:45 所属栏目:Python 来源:网络整理
导读:由于业务需要,VBA又不适合于不熟悉代码的同事使用 因此将原来的VBA代码改成Python代码并封装,后续有机会在进行改善 ? 完整代码 import xlrd import xlwt from xlutils.copy import copy from tkinter import * def run1(): qt1,qt2 = 0,0 # 打开表格 try :

由于业务需要,VBA又不适合于不熟悉代码的同事使用

因此将原来的VBA代码改成Python代码并封装,后续有机会在进行改善

?

完整代码

import xlrd
import xlwt
from xlutils.copy import copy
from tkinter import *


def run1():
    qt1,qt2 = 0,0
    #打开表格
    try:
        workbook = xlrd.open_workbook(r.fendan.xlsx)
    except:
        txt.insert(END,打开表格失败,请检查是否已创建表格fendan.xlsx)
        txt.insert(END,n)
        
    #获取名称
    sheet_names = workbook.sheet_names()
    #获取对象
    sheet1 = workbook.sheet_by_name(Sheet1)

    ##wb = xlwt.Workbook(r‘.fendan.xlsx‘)
    ##ws = wb.get_sheet(0)
    write_data = copy(workbook)
    write_save = write_data.get_sheet(0)

    nrows = sheet1.nrows
    
    #前处理,将订单号取消尾数
    for i in range(1,nrows):
        if not sheet1.cell_value(rowx=i,colx=1)[:10] ==‘‘:
##            print(sheet1.cell_value(rowx=i,colx=1)[:10])
            #取第i行2列前10个数写入i行3列
            write_save.write(i,2,sheet1.cell_value(rowx=i,colx=1)[:10])
    write_data.save(fendan2.xlsx)

    #打开表格
    workbook2 = xlrd.open_workbook(r.fendan2.xlsx)

    #获取对象
    sheet2 = workbook2.sheet_by_name(Sheet1)
    write_data2 = copy(workbook2)
    write_save2 = write_data2.get_sheet(0)
    
    #设置写入样式1
    font0 = xlwt.Font()
    pattern1 = xlwt.Pattern()
    pattern1.pattern = xlwt.Pattern.SOLID_PATTERN
    pattern1.pattern_fore_colour = 5
    style0 = xlwt.XFStyle()
    style0.pattern = pattern1
    #设置写入样式2
    pattern2 = xlwt.Pattern()
    pattern2.pattern = xlwt.Pattern.SOLID_PATTERN
    pattern2.pattern_fore_colour = 5
    pattern2.pattern_fore_colour = 2
    style1 = xlwt.XFStyle()
    style1.pattern = pattern2
    nrows = sheet2.nrows
    for k in range(1,nrows):
        for r in range(1,nrows):
            if not sheet2.cell_value(rowx=k,colx=2) == ‘‘:
##                print(k,r)
                if sheet2.cell_value(rowx=r,colx=2) == sheet2.cell_value(rowx=k,colx=5):
##                    print(sheet2.cell_value(rowx=r,colx=2),sheet2.cell_value(rowx=k,colx=5))
##                    print(sheet2.cell_value(rowx=r,colx=5))
                    if sheet2.cell_value(rowx=r,colx=3) == sheet2.cell_value(rowx=k,colx=6):
##                        print(sheet2.cell_value(rowx=r,colx=3),colx=6))
##                        print(sheet2.cell_value(rowx=r,colx=6))
                        write_save2.write(r,sheet2.cell_value(rowx=r,style=style0)
                        write_save2.write(r,3,style=style0)
                        write_save2.write(k,5,colx=5),style=style1)
                        write_save2.write(k,6,colx=6),style=style1)
                        qt1 = qt1 +sheet2.cell_value(rowx=r,colx=3)
                        qt2 = qt2 +sheet2.cell_value(rowx=k,colx=6)
    ##    print(sheet1.row_values(rowx=r,start_colx=2,end_colx=7))
    write_data2.save(fendan2.xlsx)
##    print(qt1,qt2)
    txt.insert(END,区分完毕)
    txt.insert(END,n)
    txt.insert(END,(qt1,qt2))
    txt.insert(END,n)

root = Tk()
root.title(区分订单)
root.geometry(460x300)

lb1 = Label(root,text=请在Excel表格中分别输入第三、四、六、七列订单与数量)
lb1.place(relx=0.1,rely=0.1,relwidth=0.8,relheight=0.1)

btn1 = Button(root,text=输入完请关闭Excel表格,点击此按钮,command=run1)
btn1.place(relx=0.2,rely=0.2,relwidth=0.6,relheight=0.3)

txt = Text(root)
txt.place(rely=0.6,relheight=0.3)

lb2 = Label(root,text=作者:YBX)
lb2.place(relx=0.8,rely=0.9,relwidth=0.2,relheight=0.1)

root.mainloop()
制作Excel表格校对两列数字函数并封装为EXE

?

对以下参考资料表示感谢:

https://www.jianshu.com/p/91844c5bca78

https://www.cnblogs.com/jackzz/p/9431923.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读