首页 > 其他分享 >Weekly Report Template Duplicator - 周报模板复制器

Weekly Report Template Duplicator - 周报模板复制器

时间:2023-06-17 22:24:06浏览次数:41  
标签:end file Duplicator .% datetime date Template 复制器 new

下面是周报模板复制/生成器代码:

## Weekly Report Generator ##
##  By Alexander Ezharjan  ##
### Configs ###
template_file = 'template.docx'
week_start = (2023, 6, 19)
week_end = (2023, 6, 25)
fin_date_tag = "number: YOUR_STAFF_ID)"  # 落款时间标记
###############

import os
import datetime
from docx import Document
import shutil

num_copies = int(input("请输入复制文件的数量: "))

# 读取模板文件
template_doc = Document(template_file)

# 定义新的起止时间和间隔时间
start_date = datetime.date(*week_start)
end_date = datetime.date(*week_end)
delta = datetime.timedelta(days=7)

# 复制文件
for i in range(num_copies):
    # 构造新文件名
    new_file = os.path.splitext(template_file)[0] + '_' + str(i+1) + '.docx'

    # 复制模板文件到新文件
    # os.system('cp ' + template_file + ' ' + new_file)  # on Linux
    shutil.copy(template_file, new_file)  # on Windows

    # 打开新文件
    new_doc = Document(new_file)
    new_end_date = datetime.date.today()
    # 修改时间范围
    for paragraph in new_doc.paragraphs:
        if "–" in paragraph.text:
            date_range = paragraph.text.split('–')
            old_start_date = datetime.datetime.strptime(date_range[0].strip(), "%Y.%m.%d").date()
            old_end_date = datetime.datetime.strptime(date_range[1].strip(), "%Y.%m.%d").date()
            new_start_date = start_date + i * delta
            new_end_date = end_date + i * delta
            # date_range[0] = new_start_date.strftime("%Y.%m.%d") # with zero ahead of Month/Day<10
            date_range[0] = new_start_date.strftime("%Y.%#m.%e").strip()
            date_range[1] = new_end_date.strftime("%Y.%#m.%e")
            paragraph.text = "–".join(date_range)

    # 修改撰写日
    found_end = False
    for paragraph in new_doc.paragraphs:
        if found_end:
            paragraph.text = new_end_date.strftime("%Y.%#m.%d")
            paragraph.runs[-1].bold = True
            break
        if fin_date_tag in paragraph.text:
            found_end = True

    # 保存新文件
    new_doc.save(new_file)

print("文件已复制完成!")



作者:艾孜尔江

标签:end,file,Duplicator,.%,datetime,date,Template,复制器,new
From: https://www.cnblogs.com/ezhar/p/17488362.html

相关文章

  • Vue全局过滤器的使用以及在template三元运算符中内使用过滤
    新建filters.js如下,内容过滤可以自己写函数,记得export导出importdayjsfrom"dayjs";//转小写letlower=value=>value.toLowerCase();//转大写letupper=value=>value.toUpperCase();letcurrencyStyle=(value,style)=>{//货币格式/***sty......
  • VUE使用Element-ui表达式拼接字符串 el-table-column的prop拼接字符串 拼接table 使
    VUE使用Element-ui表达式拼接字符串el-table-column的prop拼接字符串使用<templateslot-scope="scope">更改td里面值https://blog.csdn.net/WindNolose/article/details/125422409描述VUE中的标签属性,可以在属性前使用:,让属性绑定到data中的动态数据el-table-column标......
  • WPF之浅谈数据模板(DataTemplate)
    数据模板有什么用简而言之,数据模板能让你更方便、更灵活的显示你的各类数据。只有你想不到,没有它做不到的(感觉有点夸张,实践之后,你就觉得一点不夸张......
  • RedisTemplate操作Redis,这一篇文章就够了(一)
    RedisTemplate操作Redis,这一篇文章就够了(一)StringRedisTemplate和RedisTemplate的区别(二)StringRedisTemplate的一个小案例(三)文章目录一、SpringDataRedis简介1、Redis2、Jedis3、SpringDataRedis二、RedisTemplate中API使用1、pom.xml依赖2、配置文件3、RedisTemplate的直接方......
  • 使用RestTemplate发送http请求导致请求头被过滤
    问题描述:  服务内需要使用http请求访问第三方接口,由于安全问题,第三方接口为防止跨域问题,在Nginx增加了请求头(Host,Origin,Refere)判断规则,判断不通过便返回404。一次调用过程,确保请求地址,请求头,参数均没问题后,却一直404。 原因:  RestTemplate中默认使用的connector会......
  • JdbcTemplate
    知识点1:准备导入相关jar包;解释:1.第一个框是mysql连接池和连接2.第二个框是spring里的jar引入orm是其他框架,spring结合用tx是处理事务的xml配置<!--数据库连接池--><beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destr......
  • [Vue warn]: Error compiling template: Component template should contain exactly
    报错信息:[Vuewarn]:Errorcompilingtemplate:Componenttemplateshouldcontainexactlyonerootelement.Ifyouareusingv-ifonmultipleelements,usev-else-iftochaintheminstead.2|3|4||......
  • 第15章 模版方法模式(Template Method)
    摘要:TemplateMethod模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要。 主要内容1.概述2.TemplateMethod解说3..NET中的TemplateMethod模式4.适用性及实现要点 概述变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥抱变化,积极应对。如何更好的......
  • The rocketMQTemplate does not exist TransactionListener
    rocketmq-starter版本:2.2.1发送的代码:@Testpublicvoidtest1()throwsException{ //事务id StringtransactionId=UUID.randomUUID().toString(); info(">>>发送半消息!transactionId:{}",transactionId); //发送事务消息 TransactionSendResultsendResu......
  • django form data如何传递到template的vue
    参考:https://docs.djangoproject.com/en/4.2/ref/templates/builtins/#json-scriptafelyoutputsaPythonobjectasJSON,wrappedina<script>tag,readyforusewithJavaScript.Argument:TheoptionalHTML“id”ofthe<script>tag.Forexample......