keil生成hex文件找不到_500个文件生成不到10秒,Python生成合同不要太方便

大家好,我是【Python办公自动化】:闲暇之余分享点文字、编程、设计等干货,希望和你一起成长。

一起学习Python办公自动化,教你快速学习Python的方法,需要代码可以站内私信我。

员工求职,企业招聘,最终都以签订劳动合同为主。

本例目标:根据数据库中的人员生成劳动合同。

最终效果:以文件方式生成劳动合同并放置到相应目录下。

技术点:数据库的读取、docxtpl库的使用、元组内数据的访问等。

代码编写方式:采用函数、面向过程方式编写。

由于代码中涉及到的技术点在之前章节都有所讲解,这里就不再赘述。

接下来我们一起进行代码编写,通过2步搞定这个案例。

(1)模板文件。

模板文件见docxtplemplate劳动合同模板.docx,打开模板文件,可以看到,有7处内容需要更换。分别是甲方公司、乙方人员姓名、乙方部门、乙方职位、甲方人员姓名、乙方人员姓名、时间(年月日),如图所示。

e33f331ee2e91f8d77035fc8a93b3605.png
c691cf00d8ff61f01c3ada8c8b5071d1.png

(2)案例代码。

代码中定义了query()函数,主要用于数据库查询,返回元组。build_hetong()函数根据数据库返回记录,循环读取模板,找到相应的值,然后渲染生成文件。

from docxtpl import DocxTemplate

import os

import pymysql

import time

cur_path = os.path.dirname(__file__)

tempfilename = os.path.join(cur_path, 'template', '劳动合同模板.docx')

today = time.strftime("%Y-%m-%d", time.localtime())

def query():

try:

# 数据库连接,返回数据库连接对象

conn = pymysql.connect(host='localhost', user='root',

passwd='123456', db='test', port=3306)

cur = conn.cursor()

sql = 'select * from t_person_info'

cur.execute(sql)

result = cur.fetchall()

return result

except Exception as e:

print(e)

finally:

conn.close()

def build_hetong():

result = query()

for x in result:

tpl = DocxTemplate(tempfilename)

context = {

'firstparty': '灯塔教育',

'secondparty': x[1],

'department': x[15],

'job': x[16],

'owner': '龙卷风',

'name': x[1],

'sj': today

}

tpl.render(context)

savefilename=os.path.join(cur_path,'build',x[1]+'劳动合同.docx')

tpl.save(savefilename)

if __name__ == "__main__":

start = time.time()

build_hetong()

end = time.time()

sj = end-start

print(f"花费时间(秒):{sj}")

代码执行结果如图所示。483条数据使用了10秒不到,效果还不错。

5b00b9c1eecf47dd7830d28f18da5f8d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值