from tkinter import filedialog
from xlutils.copy import copy
import xlrd
from tkinter import *
class MY_GUI():
def __init__(self,init_window_name):
self.init_window_name = init_window_name
#设置窗口
def set_init_window(self):
self.init_window_name.title("SFSFG-1.0") #窗口名
self.init_window_name.geometry('256x128+10+10')
self.init_data_label = Label(self.init_window_name, text="EXCEL点击👇")
self.init_data_label.grid(row=1, column=1)
self.wenjianfenci_button = Button(self.init_window_name, text="文件上传", bg="lightblue", width=20,command=self.sfsfg) # 调用内部方法 加()为直接调用
self.wenjianfenci_button.grid(row=3, column=5)
#功能函数
def sfsfg(self):
filename = filedialog.askopenfilename()
book = xlrd.open_workbook(filename)
sheet1 = book.sheets()[0]
sheet2 = book.sheets()[1]
new_book = copy(book)
new_booksheet = new_book.get_sheet(2)
list = ['Material', 'Material Description', 'Base quantity', 'Alternative BOM', 'BOM Status', 'Component',
'Component Description', 'Component Quantity', 'CHECK', '', 'Base quantity', 'Alternative BOM',
'BOM Status', 'Component', 'Component Description', 'Component Quantity']
for i in range(len(list)):
new_booksheet.write(0, i, list[i])
row_count, a, b = 1, 1, 1
for index in range(sheet1.nrows):
sh1_entire_row = sheet1.row_values(index)
if index > 0:
for item in range(sheet2.nrows):
if item > 0:
sh2_entire_row = sheet2.row_values(item)
if str(sh1_entire_row[5]) == str(sh2_entire_row[0]):
new_booksheet.write(row_count, 0, sheet1.row_values(index)[0])
new_booksheet.write(row_count, 1, sheet1.row_values(index)[1])
new_booksheet.write(row_count, 2, sheet1.row_values(index)[2])
new_booksheet.write(row_count, 3, sheet1.row_values(index)[3])
new_booksheet.write(row_count, 4, sheet1.row_values(index)[4])
new_booksheet.write(row_count, 5, sheet1.row_values(index)[5])
new_booksheet.write(row_count, 6, sheet1.row_values(index)[6])
new_booksheet.write(row_count, 7, sheet1.row_values(index)[7])
new_booksheet.write(row_count, 8, sheet1.row_values(index)[8])
new_booksheet.write(row_count, 10, sheet2.row_values(item)[2])
new_booksheet.write(row_count, 11, sheet2.row_values(item)[3])
new_booksheet.write(row_count, 12, sheet2.row_values(item)[4])
new_booksheet.write(row_count, 13, sheet2.row_values(item)[5])
new_booksheet.write(row_count, 14, sheet2.row_values(item)[6])
new_booksheet.write(row_count, 15, sheet2.row_values(item)[7])
row_count += 1
new_book.save(r"FGSFG.xls")
def gui_start():
init_window = Tk() #实例化出一个父窗口
ZMJ_PORTAL = MY_GUI(init_window)
# 设置根窗口默认属性
ZMJ_PORTAL.set_init_window()
init_window.mainloop() #父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示
gui_start()
文件目录下:pyinstaller -F -w filename.py
制作完成