python生成word合同的实例方法


Posted in Python onJanuary 12, 2021

在企业招聘中,最重要的事情,就是需要签订劳动合同,但是有些大的公司,因为人员过于,在设置编辑合同的时候,比较耗时耗力,编程存在的意义,就是帮助我们实现办公自动化,因此能实现自动生成合同,还是非常重要的,下面小编就来采用函数以及面向对象过程,教大家实现生成合同过程。

1、模板文件

甲方公司、乙方人员姓名、乙方部门、乙方职位、甲方人员姓名、乙方人员姓名、时间(年月日),如图所示。

python生成word合同的实例方法

2、实现代码

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}")

3、输出结果

python生成word合同的实例方法

实例扩展(批量WORD合同生成)

导入数据库

#导入对应数据库
import numpy as np 
import pandas as pd 
import os 
import docx
from docx.shared import Pt
from docx.oxml.ns import qn
#修改项目文件地址
os.chdir(r'C:\Users\WIN7\Desktop\分期账单自动化')
os.getcwd()

全部代码:

'''
人民币数字转大写汉字
'''
# coding: utf-8
import warnings
from decimal import Decimal

def cncurrency(value, capital=True, prefix=False, classical=None):
 '''
 参数:
 capital: True 大写汉字金额
    False 一般汉字金额
 classical: True 元
    False 圆
 prefix:  True 以'人民币'开头
    False, 无开头
 '''
 if not isinstance(value, (Decimal, str, int)):
  msg = '''
  由于浮点数精度问题,请考虑使用字符串,或者 decimal.Decimal 类。
  因使用浮点数造成误差而带来的可能风险和损失作者概不负责。
  '''
  warnings.warn(msg, UserWarning)
 # 默认大写金额用圆,一般汉字金额用元
 if classical is None:
  classical = True if capital else False
  
 # 汉字金额前缀
 if prefix is True:
  prefix = '人民币'
 else:
  prefix = ''
  
 # 汉字金额字符定义
 dunit = ('角', '分')
 if capital:
  num = ('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖')
  iunit = [None, '拾', '佰', '仟', '万', '拾', '佰', '仟','亿', '拾', '佰', '仟', '万', '拾', '佰', '仟']
 else:
  num = ('?', '一', '二', '三', '四', '五', '六', '七', '八', '九')
  iunit = [None, '十', '百', '千', '万', '十', '百', '千','亿', '十', '百', '千', '万', '十', '百', '千']
 if classical:
  iunit[0] = '元' if classical else '圆'
 # 转换为Decimal,并截断多余小数

 if not isinstance(value, Decimal):
  value = Decimal(value).quantize(Decimal('0.01'))

 # 处理负数
 if value < 0:
  prefix += '负'   # 输出前缀,加负
  value = - value   # 取正数部分,无须过多考虑正负数舍入
        # assert - value + value == 0
 # 转化为字符串
 s = str(value)
 if len(s) > 19:
  raise ValueError('金额太大了,不知道该怎么表达。')
 istr, dstr = s.split('.')   # 小数部分和整数部分分别处理
 istr = istr[::-1]     # 翻转整数部分字符串
 so = []  # 用于记录转换结果
 
 # 零
 if value == 0:
  return prefix + num[0] + iunit[0]
 haszero = False  # 用于标记零的使用
 if dstr == '00':
  haszero = True # 如果无小数部分,则标记加过零,避免出现“圆零整”
  
 # 处理小数部分
 # 分
 if dstr[1] != '0':
  so.append(dunit[1])
  so.append(num[int(dstr[1])])
 else:
  so.append('整')   # 无分,则加“整”
 # 角
 if dstr[0] != '0':
  so.append(dunit[0])
  so.append(num[int(dstr[0])])
 elif dstr[1] != '0':
  so.append(num[0])  # 无角有分,添加“零”
  haszero = True   # 标记加过零了
  
 # 无整数部分
 if istr == '0':
  if haszero:    # 既然无整数部分,那么去掉角位置上的零
   so.pop()
  so.append(prefix)  # 加前缀
  so.reverse()   # 翻转
  return ''.join(so)

 # 处理整数部分
 for i, n in enumerate(istr):
  n = int(n)
  if i % 4 == 0:   # 在圆、万、亿等位上,即使是零,也必须有单位
   if i == 8 and so[-1] == iunit[4]: # 亿和万之间全部为零的情况
    so.pop()      # 去掉万
   so.append(iunit[i])
   if n == 0:       # 处理这些位上为零的情况
    if not haszero:     # 如果以前没有加过零
     so.insert(-1, num[0])  # 则在单位后面加零
     haszero = True    # 标记加过零了
   else:        # 处理不为零的情况
    so.append(num[n])
    haszero = False     # 重新开始标记加零的情况
  else:         # 在其他位置上
   if n != 0:       # 不为零的情况
    so.append(iunit[i])
    so.append(num[n])
    haszero = False     # 重新开始标记加零的情况
   else:        # 处理为零的情况
    if not haszero:     # 如果以前没有加过零
     so.append(num[0])
     haszero = True

 # 最终结果
 so.append(prefix)
 so.reverse()
 return ''.join(so)

到此这篇关于python生成word合同的实例方法的文章就介绍到这了,更多相关如何使用python生成word合同内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
Windows下安装Scrapy
Oct 17 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
基于python实现从尾到头打印链表
Nov 02 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
Python中的xlrd模块使用整理
Jun 15 Python
Python pygame实现中国象棋单机版源码
Jun 20 Python
python中常用的数据结构介绍
Jan 12 #Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 #Python
python3 kubernetes api的使用示例
Jan 12 #Python
python excel和yaml文件的读取封装
Jan 12 #Python
python drf各类组件的用法和作用
Jan 12 #Python
Python try except else使用详解
Jan 12 #Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 #Python
You might like
PHP与javascript的两种交互方式
2006/10/09 PHP
快速配置PHPMyAdmin方法
2008/06/05 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
php实现的递归提成方案实例
2015/11/14 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
苹果Mac升级:MacSales.com
2017/11/20 全球购物
工厂保安员岗位职责
2014/01/31 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
行政副总岗位职责
2014/02/23 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
计算机网络专业求职信
2014/06/05 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
面试通知单大全
2015/04/20 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
2016中秋节广告语
2016/01/28 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
六年级数学教学反思
2016/02/16 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫