首页 > 编程语言 >【Python-办公自动化】几分钟生成上万份合同(用此思路可以用于写作固定格式的文章)

【Python-办公自动化】几分钟生成上万份合同(用此思路可以用于写作固定格式的文章)

时间:2024-08-16 11:51:47浏览次数:10  
标签:Python dataframe datetime 上万份 time print import 用此 row

欢迎来到"花花 Show Python",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。
自我介绍:
我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,让每个人都能享受到编程的乐趣。我相信,通过不断的学习和实践,我们都能够成为更好的开发者。
关注提示:
如果您喜欢我的内容,别忘了点击关注哦!这样您就可以第一时间获取我的更新和分享。您的支持是我不断前进的动力。

目标:

今天的目标是将EXCEL里的内容用于批量签署合同,见下表:
在这里插入图片描述
我们需要根据表格每一行数据内容签订合同,见下图:
在这里插入图片描述
其实很简单 ,我们根据EXCEL表内容替换合同内{}内容即可,见下图:

在这里插入图片描述

# 导入DocxTemplate类,用于操作Word模板  
from docxtpl import DocxTemplate  
# 导入pandas库,用于数据处理  
import pandas as pd  
# 从openpyxl.utils.dataframe导入dataframe_to_rows函数,用于将DataFrame转换为行列表  
from openpyxl.utils.dataframe import dataframe_to_rows  
# 导入datetime模块,但在这个脚本中实际上并未使用其日期时间转换功能  
import datetime  
# 导入time模块,用于计算脚本执行时间  
import time  
  
# 记录脚本开始执行的时间  
s_t = time.time()  
  
# 从Excel文件读取数据到DataFrame  
df = pd.read_excel('各高校空调合同.xlsx')  
  
# 下面这行代码被注释掉了,它原本的作用是将签约日期列从字符串转换为datetime对象  
# 但由于后续代码直接使用了字符串形式的日期,所以这行代码在这里是多余的  
# df["签约日期"] = df["签约日期"].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d"))  
  
# 使用dataframe_to_rows将DataFrame转换为行的列表,每行是一个包含所有列数据的列表  
# 注意:这里设置了index=False(不包括索引),header=False(不包括列名)  
datas = [{"甲方": row[0], "乙方": row[1], "产品名称": row[2],  
          "产品价格": row[3], "保修期": row[4], "签约日期": row[5]}  
         for row in dataframe_to_rows(df, index=False, header=False)]  
  
# 打印datas列表,查看数据是否按预期转换  
print(datas)  
  
# 遍历datas列表中的每个数据项  
for data in datas:  
    # 打印当前正在处理的数据项  
    print(data)  
    # 加载Word模板  
    tpl = DocxTemplate('各高校安装空调合同书.docx')  
    # 打印模板对象,通常这一步是调试用的  
    print(tpl)  
    # 使用当前数据项渲染模板  
    tpl.render(data)  
  
    # 构造生成的Word文件的路径,以甲方名称命名  
    file_path = f'合同生成\\{data["甲方"]}的空调安装合同.docx'  
    # 保存渲染后的模板到指定路径  
    tpl.save(file_path)  
    # 打印生成文件的消息  
    print(f'{data["甲方"]}的空调安装合同已生成')  
  
# 记录脚本执行结束的时间  
e_t = time.time()  
  
# 计算并打印脚本执行的总时间  
print(f"共耗时{e_t-s_t}s")

运行代码看下用时多久:
在这里插入图片描述
用时3.3秒。

再看下我们一共生成了多少份文件:
在这里插入图片描述

掌握了方法,想生成多少份就是看心情了。

标签:Python,dataframe,datetime,上万份,time,print,import,用此,row
From: https://blog.csdn.net/2202_76035290/article/details/141216047

相关文章

  • SSM-国外鞋服代购平台-97782(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    SSM国外鞋服代购平台摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鞋服代购平台当然也不例外。代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过......
  • 使用magicAPI对接python 文件,上传参数获取不到回参问题
    1、在python文件中,创建post请求 @app.route('/post_endpoint',methods=['POST'])defhandle_post_request():#从请求中获取JSON数据data=request.form#打印接收到的数据(可选,用于调试)print(data)returnjsonify(data),200 这个方法,是得到form-data返回的参......
  • Python格式化字符串大全
    Python提供了多种方式来格式化字符串,以下是主要的几种方法,我会用一个新的例子来展示它们的用法。假设我们有三个变量name,age,和city,我们想要打印一句话:“Hello,mynameisAlice,Iam30yearsoldandIliveinNewYork.”%操作符这是较早的格式化方法,又称为格式化字符......
  • 小学生教你微积分,用编程理解高数(python,C,C++)
    一、代码实现微分(实际上是导数,微分不用除dx):python代码:x=0dx=0.00001deff(x):y=2*xreturnyprint((f(x+dx)-f(x))/dx)C语言代码:#include<stdio.h>doublex=1;doubledx=0.00001;doublef(doublearg){doubley=2*arg;returny;}......
  • Python - SOLID Principles
    •Singleresponsibilityprinciple(SRP)•Open-closedprinciple(OCP)Itemphasizesthatsoftwareentities, suchasclassesandmodules,shouldbeopenforextensionbutclosedformodification.Whatdoes thatmean?Itmeansthatonceasoftwareentityis......
  • python 利用高德得到地址对应的经伟度,由于地址原因在指定时间范围内得不到经伟度而终
    importrequests,sysimportjson,math,xlrd,xlwt,time#!/usr/bin/envpython#-*-coding:utf-8-*-frommathimportsin,asin,cos,radians,fabs,sqrtimportpandasaspdfromgeopy.distanceimportgeodesicfromopenpyxlimportload_workbookimportred......
  • 计算机毕业设计必看必学!! 93494基于springboot 书店信息管理系统,原创定制程序, java
    摘 要书店信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户)模块管理(图书信息、分类管理、购......
  • 华为OD笔试机试 - 攀登者2 (python/c++/java 2024年C卷D卷真题算法)
    华为OD机试(C卷+D卷)2024真题目录(Java&c++&python)题目描述攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的......
  • 【视频讲解】Python用LSTM长短期记忆网络GARCH对SPX指数金融时间序列波动率滚动预测
    全文链接:https://tecdat.cn/?p=37371 原文出处:拓端数据部落公众号本文融合了多种技术,其中LSTM(长短期记忆网络)和GARCH(广义自回归条件异方差)模型尤为关键。LSTM在处理时间序列数据方面独具优势,能够捕捉长期依赖关系,为金融预测提供强大支持。GARCH模型则能有效捕捉金融时间序......
  • Python 查看当前环境所有变量的大小
    https://blog.csdn.net/lly1122334/article/details/104757467defshow_memory(unit='KB',threshold=1):'''查看变量占用内存情况:paramunit:显示的单位,可为`B`,`KB`,`MB`,`GB`:paramthreshold:仅显示内存数值大于等于threshold的变量''�......