发邮件
2022年7月31日
14:37
import os
from openpyxl import load_workbook
import win32com.client as win32
wb = load_workbook("``邮件地址``.xlsx")
ws = wb.active
address = {}
for i in range(2, ws.max_row + 1):
dept = ws["A" + str(i)].value
to_add = ws["B" + str(i)].value
cc_add = ws["C" + str(i)].value
address[dept] = [to_add, cc_add]
def Send_mail(to_add, cc_add, file_path, dept):
'''
``传入参数说明:
to_add,``收件人地址
cc_add,``抄送地址
file_path,``附件路径
dept,``部门名称
'''
outlook = win32.Dispatch('Outlook.Application') # ``调用``windows outlook``应用
mail = outlook.CreateItem(0) # ``创建邮件
mail.to = to_add # ``收件人
mail.cc = cc_add # ``抄送人
mail.Subject = "{}``年假情况``".format(dept) # ``主题
mail.Attachments.Add(file_path) # ``添加附件。若有多个附件,则多调用几次即可
mail.Body = '''Dear All,\n``这是``{}``的年假情况,请查收!谢谢。``\n\nBest regards!\n``人事部 小李``'''.format(dept) # ``正文内容
mail.Send() # ``发送邮件
# ``发送邮件到各部门
for dept in address.keys():
to_add = address[dept][0]
cc_add = address[dept][1]
file_path = os.getcwd() + '
[\年假_按部门\年假情况_{}.xlsx'.format(dept)](file://年假_按部门/年假情况_{}.xlsx'.format(dept))
Send_mail(to_add, cc_add, file_path, dept)
print("``邮件发送完成。``")
PyQt5 制作可视化界面
2022年7月31日
15:54
class MainGUI(QtWidgets.QMainWindow):
'''
``文件目录框使用``QLineEdit()``、按钮使用``QPushButton()``、
``结果显示框使用``QListWidget()``,
``整体的布局使用``QGridLayout()
'''
#``设置用户界面
def __init__(self):
super().__init__() #``调用父类中``__init__``的函数
self.setWindowTitle("``领料明细汇总``") #``设置窗口标题
self.resize(800, 400) #``设置窗口大小,单位为像素
self.main_widget = QtWidgets.QWidget() #``创建界面 ``
self.main_widget_layout = QtWidgets.QGridLayout() #``选取布局为网格布局(多行多列)
self.main_widget.setLayout(self.main_widget_layout) #``设置布局
#``设置部件
self.input = QtWidgets.QLineEdit()#``文本编辑框``1
self.input_btn = QtWidgets.QPushButton("``选择输入文件夹``") #``按钮``1``及名称
self.output = QtWidgets.QLineEdit() #``文本编辑框``2
self.output_btn = QtWidgets.QPushButton("``选择输出文件夹``")#``按钮``2``及名称
self.show_result = QtWidgets.QListWidget() #``列表控件
self.run = QtWidgets.QPushButton("``执行汇总``") #``按钮``3``及名称
#``部件的位置设置
self.main_widget_layout.addWidget(self.input, 0, 0, 1, 2) #``文本编辑框``1``放在第``1``行``1``列,占用``1``行``2``列
self.main_widget_layout.addWidget(self.input_btn, 0, 2, 1, 1) #``按钮``1``放在第``1``行第``3``列,占用``1``行``1``列
self.main_widget_layout.addWidget(self.output, 1, 0, 1, 2)
self.main_widget_layout.addWidget(self.output_btn, 1, 2, 1, 1)
self.main_widget_layout.addWidget(self.run, 2, 2, 1, 1)
self.main_widget_layout.addWidget(self.show_result, 3, 0, 3, 3)
self.setCentralWidget(self.main_widget) #``设置``QMainWindow``的中心窗口
self.input_btn.clicked.connect(self.Choice_dir_input) #``将``"``选择输入文件夹``"``按钮绑定``Choice_dir_input``函数
self.output_btn.clicked.connect(self.Choice_dir_output) #``将``"``选择输出文件夹``"``按钮绑定``Choice_dir_output``函数
self.run.clicked.connect(self.Summary_data) #“``执行汇总``”``按钮绑定``Summary_data``函数
def main():
app = QtWidgets.QApplication(sys.argv) #[``固定写法``]``实例化应用,``sys.argv``是一个从程序外部获取参数的桥梁
app.setWindowIcon(QIcon("PO.ico"))#``设置界面左上角图标
gui = MainGUI() #[``固定写法``]``调用``MainGUI``类
gui.show() #[``固定写法``]``显示窗口
sys.exit(app.exec_()) #[``固定写法``]``调用``exec_()``方法运行程序。``sys.exit()``用于程序的正常退出
小病毒制作
2022年7月31日
18:46