From 87e00cdfcb9f37b7b00067c2936c7ef00f1f01c0 Mon Sep 17 00:00:00 2001 From: fengbohan <1953356163@qq.com> Date: Wed, 16 Aug 2023 15:27:12 +0800 Subject: [PATCH] init --- .gitignore | 2 ++ gen_word.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .gitignore create mode 100644 gen_word.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f459667 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.doc +*.tmp diff --git a/gen_word.py b/gen_word.py new file mode 100644 index 0000000..3481161 --- /dev/null +++ b/gen_word.py @@ -0,0 +1,88 @@ +import time +import datetime + +from docx import Document +from docx.shared import Inches + +import win32com +from win32com.client import Dispatch, constants +import os + +class WEEK_REPORT: + file_name = "" + pre_file_name = "" + pre_str = "" + str = "" + __word = "" + __doc = "" + def __init__(self): + self.get_name() + def get_name(self): + self.file_name = "{}WW{}周工作报告_冯博涵.doc".format(time.strftime('%Y'), time.strftime('%W')) + self.pre_file_name = "{}WW{}周工作报告_冯博涵.doc".format(time.strftime('%Y'), str(int(time.strftime('%W'))-1)) + print("pre file name: {}; \nnew file name: {};".format(self.pre_file_name, self.file_name)) + def copy_file(self): + os.system('copy {} {}'.format(self.pre_file_name, self.file_name)) + def edit_file(self): + s = self.word.Selection + s.Find.Execute("{}WW{}".format(time.strftime('%Y'), str(int(time.strftime('%W'))-1)), + False, False, False, False, False, True, 1, False, + "{}WW{}".format(time.strftime('%Y'), time.strftime('%W')), 1) + self.get_last_week() + self.get_current_week() + s.Find.Execute(self.pre_str, + False, False, False, False, False, True, 1, False, + self.str, 1) + def update_file(self): + self.word = Dispatch('Word.Application') + # 或者使用下面的方法,使用启动独立的进程: + # word = DispatchEx('Word.Application') + + # 如果不声明以下属性,运行的时候会显示的打开word + self.word.Visible = 1 # 0:后台运行 1:前台运行(可见) + self.word.DisplayAlerts = 0 # 不显示,不警告 + + self.doc = self.word.Documents.Open(os.getcwd() + "\\{}".format(self.file_name)) # 打开一个已有的word文档 + + self.edit_file() # 编辑文档 + + self.doc.Save() # 保存 + # doc.SaveAs(os.getcwd() + "\\funOpenExistFile.docx") # 另存为 + # self.doc.Close() # 关闭 word 文档 + # self.word.Quit() # 关闭 office + + # date: "2022-08-09" + def get_last_week(self, date=None): + if date: + today = datetime.datetime.strptime(str(date), '%Y-%m-%d') + else: + today = datetime.datetime.today() + end_time = today - datetime.timedelta(days=today.isoweekday()) -datetime.timedelta(days=2) + start_time = end_time - datetime.timedelta(days=4) + # return start_time.strftime("%Y-%m-%d"), end_time.strftime("%Y-%m-%d") + self.pre_str = start_time.strftime("%#m.%#d") + "~" + end_time.strftime("%#m.%#d") + print("pre_str: {}".format(self.pre_str)) + + # date: "2022-08-09" + def get_current_week(self,date=None): + if date: + duty_date = datetime.datetime.strptime(str(date), '%Y-%m-%d') + monday, friday = duty_date, duty_date + else: + monday, friday = datetime.date.today(), datetime.date.today() + one_day = datetime.timedelta(days=1) + while monday.weekday() != 0: + monday -= one_day + while friday.weekday() != 4: + friday += one_day + + # return monday, friday + # 返回时间字符串 + # return datetime.datetime.strftime(monday, "%Y-%m-%d"), datetime.datetime.strftime(friday, "%Y-%m-%d") + self.str = datetime.datetime.strftime(monday, "%#m.%#d") + "~" + datetime.datetime.strftime(friday, "%#m.%#d") + print("str: {}".format(self.str)) + +if __name__ == "__main__": + week_report = WEEK_REPORT() + week_report.copy_file() + week_report.update_file() \ No newline at end of file