import wx
from openpyxl import load_workbook
def get_col_value(excel_path,sheetname,column):
wb = load_workbook(excel_path)
ws = wb[sheetname]
# rows = ws["A"]
col_value = list(ws.iter_cols(min_row=2, min_col=column, max_col=column, values_only=True))[0]
result = set()
for i in col_value:
result.add(str(i).strip())
return result
class Frame(wx.Frame):
def __init__(self, *args, **kwargs):
super().__init__(*args,**kwargs)
self.panel = wx.Panel(self)
self.path_text = wx.TextCtrl(self.panel)
self.open_button = wx.Button(self.panel, label="打开")
self.open_button.Bind(wx.EVT_BUTTON, self.openfile)
self.save_button = wx.Button(self.panel, label="运行")
self.save_button.Bind(wx.EVT_BUTTON, self.view_result)
self.content_text = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE)
self.box = wx.BoxSizer() # 不带参数表示默认实例化一个水平尺寸器
self. box.Add(self.path_text, proportion=5, flag=wx.EXPAND | wx.ALL, border=3) # 添加组件
self.box.Add(self.open_button, proportion=2, flag=wx.EXPAND | wx.ALL, border=3) # 添加组件
self.box.Add(self.save_button, proportion=2, flag=wx.EXPAND | wx.ALL, border=3) # 添加组件
self.v_box = wx.BoxSizer(wx.VERTICAL) # wx.VERTICAL参数表示实例化一个垂直尺寸器
self.v_box.Add(self.box, proportion=1, flag=wx.EXPAND | wx.ALL, border=3) # 添加组件
self.v_box.Add(self.content_text, proportion=5, flag=wx.EXPAND | wx.ALL, border=3) # 添加组件
self.panel.SetSizer(self.v_box) # 设置主尺寸器
def openfile(self, event): # 定义打开文件事件
dlg = wx.FileDialog(self, "选择excel路径", style=wx.DD_DEFAULT_STYLE)
if dlg.ShowModal() == wx.ID_OK:
excel_path = dlg.GetPath()
self.path_text.SetValue(excel_path)
print(excel_path)
def view_result(self, event):
excel_path = self.path_text.GetValue()
if not excel_path:
wx.MessageBox("请输入路径文件",caption="提示框",style=wx.OK|wx.CANCEL)
return
elif not str(excel_path).endswith(".xlsx"):
wx.MessageBox("老弟,请输入文件后缀为.xlsx的文件")
return
python_value = get_col_value(excel_path, "Sheet1", 1)
java_value = get_col_value(excel_path, "Sheet1", 2)
equal_person = java_value & python_value
result = f"python学习圈的总人数为:{len(python_value)}" + "\n" + \
f"java学习圈的总人数为: {len(java_value)}" + "\n" + \
f"python和java学习圈都加入的人数为: {len(equal_person)}\n" \
f"python和java学习圈都加入的学生名字分别是: {equal_person}"
self.content_text.SetValue(result)
class MyApp(wx.App):
def OnInit(self):
self.frame = Frame(parent=None, title='Spare', pos=(900,700))
self.frame.Bind(wx.EVT_CLOSE,self.OnCloseWindow)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def OnExit(self):
"""
app关闭后调用的
:return:
"""
print("app关闭")
return 1
def OnCloseWindow(self, event):
"""
# 关闭弹窗时调用的
:param event:
:return:
"""
dlg = wx.MessageDialog(None, f'老弟,你要走了吗? 我会想你的{chr(0x1f600)}', '思念弹窗', wx.YES_NO | wx.ICON_QUESTION)
retCode = dlg.ShowModal()
if (retCode == wx.ID_YES):
self.frame.Destroy()
else:
pass
if __name__ == '__main__':
app = MyApp(False)
app.MainLoop()
print("over")
python小工具之对比excel中的人名(三)
最新推荐文章于 2023-05-31 01:08:45 发布