基于Python的办公自动化应用

2024-01-03 08:42周洪斌苗盼盼
现代计算机 2023年21期
关键词:办公自动化通知书邮件

周洪斌,苗盼盼

(沙洲职业工学院数字化与微电子学院,张家港 215600)

0 引言

Python 程序设计语言具备语法简洁、灵活高效、类库丰富等优点,在网络爬虫[1]、数据分析、人工智能、办公自动化、Web 自动化测试[2]等方面得到了广泛运用。办公自动化是众多企事业单位每天面临的重要工作,当面临多个文档、电子表格需要处理时,采用传统的单个文档一一处理的方式不仅枯燥乏味、耗时费力,而且容易出错,采用Python 实现办公自动化,实现文档、电子表格的批量处理,可以有效提高办公效率。Python 语言提供了丰富的类库支持Word 文档、Excel 表格的自动化处理[3]以及电子邮件的自动收发。

1 Python办公自动化基础

1.1 操作Word文件

Win32com 是Python 操作Word 文件的常用组件,只要计算机已安装Microsoft Office 软件,Python 就可以通过内置的Win32com 组件对Microsoft Office文件进行存取。

(1)创建Word应用程序变量

from win32com.client import Dispatch

word=Dispatch(“Word.Application”)

word.Visible=0

word.DisplayAlerts=0

Word 应用程序变量的Visible 属性表示是否显示Word 界面,0 表示不显示;DisplayAlerts 属性表示是否显示Word警告信息,0表示不显示。

(2)新建文档并写入内容

doc=word.Documents.Add()

range=doc.Range(0,0)

range.InsertAfter(“Python写入”)

Word 应用程序变量的Documents.Add 方法用于新建一个文件,Range方法用于设置文件位置,InsertAfter方法表示在该位置后面写入内容。

(3)保存、关闭文件并退出Word应用程序

doc.SaveAs(“D:\py.docx”)

doc.Close()

word.Quit()

自动操作文件完成后退出Word 应用程序,以免占用系统资源。

1.2 读写Excel文件

Pandas 是Python 广泛使用的数据分析库,可以用于读写Excel 表格、CSV 等格式的数据文件[4]。Pandas库主要提供了Series、DataFrame两种类型的数据对象用于存储及分析数据。Series用于存储一行或一列的数据,可以理解为Excel表格中的一列数据;DataFrame 用于存储多行和多列的数据集合,可以理解为Excel 的表格。通过Pandas读写Excel文件的基本步骤如下:

(1)通过pandas 提供的read_excel 方法读取Excel文件

import pandas as pd

data=pd.read_excel(“员工信息.xlsx”)

上面的data 变量即为DataFrame 类型的变量。

(2)通过列名访问数据列

from datetime import datetime

#计算工龄

data[“工龄(年)”]=datetime.now().year-data

[“入职时间”].dt.year

(3)通过to_excel方法写数据到Excel文件中

data.to_excel(“员工工龄.xlsx”)

1.3 Python发送邮件

SMTP 是发送邮件的协议,Python 通过内置的smtplib和email两个模块提供对SMTP的支持,smtplib 负责发送邮件,email 负责构造邮件。使用Python发送邮件的主要代码如下:

(1)导入需要的smtplib和email模块

import smtplib

import email.mime.multipart

import email.mime.text

(2)给出发件人邮箱、授权码及收件人邮箱

#发件人邮箱

sendAddr=‘szitzhb@qq.com’

#发件人授权码

password=‘wheqqckqwysxugha’

#收件人邮箱

recipientAddrs=‘itfans@163.com’

(3)通过email 模块的MIMEMultipart 对象构造邮件内容,包括发件人、收件人、邮件主题及正文

#构造邮件内容

msg=email.mime.multipart.MIMEMultipart()

msg[‘from’]=sendAddr

msg[‘to’]=recipientAddrs

#邮件主题

msg[‘subject’]=‘Python发送邮件’

#邮件正文

txt=email.mime.text.MIMEText(‘这是一封来自

Python的邮件。’,‘plain’,‘utf-8’)

msg.attach(txt)

(4)建立与服务器的连接并发送邮件

#建立SMTP_SSL连接

smtp=smtplib.SMTP_SSL(‘smtp.qq.com’,465)

#登录邮箱

smtp.login(sendAddr,password)

#发送邮件

smtp.sendmail(sendAddr,recipientAddrs,str(msg))

smtp.quit()

2 综合应用

企业人力资源部门给新员工发送PDF 格式的录用通知书通知其办理入职手续,是人力资源部门的一项常规工作。如果录用的新员工人数较多,则是一项费时费力的工作。我们可以通过Python 实现PDF 格式录用通知书的批量产生并自动发送电子邮件,具体过程如图1所示。

图1 批量产生录用通知书并发送邮件过程

2.1 制作新员工录用通知书模板

制作如图2 所示的录用通知书Word 模板,{{name}}、{{gender}}、{{department}}以及{{position}}表示占位符,是需要填充的内容,并可以根据需要设置好格式。

图2 新员工录用通知书模板

2.2 读取新员工录用名单

通过Pandas 从图3 所示的员工录用Excel 名单中读取录用信息。

图3 新员工录用名单

主要代码如下:

#导入pandas

import pandas as pd

#读取excel文件

emps=pd.read_excel(‘录用名单.xlsx’)

#依次获得各列的值,即新员工姓名、

性别、入职部门、岗位以及邮箱

name=emps[“姓名”].str.rstrip()

#将性别男、女转换成先生、女生

gender=emps[‘性别’].str.rstrip().map(dict(zip

([‘男’,‘女’],[‘先生’,‘女士’])))

department=emps[‘入职部门’].str.rstrip()

position=emps[‘入职岗位’].str.rstrip()

email=emps[‘邮箱’].str.rstrip()

2.3 根据模板批量生成录用通知书

使用DocxTemplate 可以根据模板批量生成录用通知书,主要步骤如下:

(1)安装并导入DocxTemplate

pip install docxtpl

from docxtpl import DocxTemplate

(2)使用2.2 节读取的新员工录用名单填充模板

num=emps.shape[0]

for i in range(num):

context={

“name”:name[i],

“gender”:gender[i],

“department”:department[i],

“position”:position[i]

tpl=DocxTemplate(‘录用通知书模板.docx’)

#通过DocxTemplate的render方法渲染模板

tpl.render(context)

#生成每个新员工的录用通知书

tpl.save(file_path+r“{}的录用通知书.docx”.format

(name[i]))

生成的录用通知书效果如图4所示。

图4 生成的新员工录用通知书

2.4 生成PDF格式的录用通知书

可以通过Win32com 组件把上一步生成的Word 格式的录用通知书自动转换成PDF 格式。主要代码如下:

doc=word.Documents.Open(fileName)

#下面的2行代码用于把文件扩展名改为pdf

index=fileName.find(“.”)

pdfFile=fileName[0:index]+“.pdf”

#存为PDF格式,17代表PDF格式

doc.SaveAs(pdfFile,17)

doc.Close()

2.5 自动发送电子邮件

使用Python 自动发送电子邮件,并把上一步生成的PDF 格式的录用通知书作为附件发送。添加附件的主要代码如下:

msg=email.mime.multipart.MIMEMultipart()

part=MIMEApplication(open(attachName,‘rb’).read())

part.add_header(‘Content-Disposition’,‘attachment’,

filename=attachName)

msg.attach(part)

3 结语

Python语言为办公自动化提供了Win32com、Pandas、DocxTemplate、smtplib 等丰富的类库,可以实现Word、Excel文档以及邮件处理的自动化,摆脱机械性和重复性的烦琐事务,降低企事业单位用工成本,提高工作“含金量”,实现企事业单位的自动化、高效化、智能化办公。

猜你喜欢
办公自动化通知书邮件
基于James的院内邮件管理系统的实现
入学通知书
来自朋友的邮件
工地上的他收到了北大录取通知书
浅谈办公自动化系统的设计与应用
办公自动化中的计算机应用
CMailServer
一封邮件引发的梅赛德斯反弹
办公自动化系统软件教学探索
办公室自动化、办公自动化与OA