![](https://i-blog.csdnimg.cn/direct/0d87b6b9efd54da48f449fd26e79558a.png)
背景需求
今天下发通知
![](https://i-blog.csdnimg.cn/direct/8acffd4225584146a78f48a50a5a1326.png)
三个园区的保健老师需要填写
1.2023学年(202406)的六一体检数据
2.2024学年(202409)的新生入园体检数据
![](https://i-blog.csdnimg.cn/direct/2579e58334404207864c0258b45cae20.png)
我先把上一轮填写过的数据模版下载下来(套用模版)
![](https://i-blog.csdnimg.cn/direct/b339fb1d6da44e749ba98f3f78e93f21.png)
把EXCEL下载到原始文件夹里
![](https://i-blog.csdnimg.cn/direct/f87d48b88e0246b5b0f7e5b65dc8722a.png)
![](https://i-blog.csdnimg.cn/direct/598f1b5e26004237b44d09fb7b56173b.png)
模版下载完成,
我想到去年2023年9月用这些前年2022年9月的模版发给保健老师后,保健老师们更改2023年最新数据发回给我,但他们忘记修改文件名上的年份数字2022和标题里的年份数字2022,最后反复传了几次(更改数据和年份为2023)才正确。
![](https://i-blog.csdnimg.cn/direct/f169f3146c6c4ab7b54c7390097e488a.png)
![](https://i-blog.csdnimg.cn/direct/c30470e60e7b4d41aaf76ce0fd2417c6.png)
![](https://i-blog.csdnimg.cn/direct/7ea2131a1843468a959f6f6e31f3268e.png)
所以本次我用程序,直接把文件名上的年份数字+1,把每个工作表的第一行的标题里面的年份数字+1。
代码展示:
'''
9月园园通幼儿健康数据上报 EXCEL模版的年份变更(作为模版发给保健老师更新数据)
星火讯飞,阿夏
2024年9月12日
'''
import os
import re
import openpyxl
import shutil
def replace_text_in_excel(file_path, old_text, new_text):
wb = openpyxl.load_workbook(file_path)
for sheet in wb:
for row in sheet.iter_rows():
for cell in row:
if isinstance(cell.value, str) and old_text in cell.value:
cell.value = cell.value.replace(old_text, new_text)
wb.save(file_path)
def process_files(src_folder, dst_folder):
if not os.path.exists(dst_folder):
os.makedirs(dst_folder)
for file_name in os.listdir(src_folder):
if file_name.endswith('.xlsx') or file_name.endswith('.xls'):
src_file_path = os.path.join(src_folder, file_name)
dst_file_path = os.path.join(dst_folder, file_name)
# 创建一个新的副本
new_file_path = os.path.join(dst_folder, 'temp_' + file_name)
shutil.copy2(src_file_path, new_file_path)
if '2023' in file_name:
new_file_name = file_name.replace('2023', '2024')
dst_file_path = os.path.join(dst_folder, new_file_name)
replace_text_in_excel(new_file_path, '2023', '2024')
elif '2022' in file_name:
new_file_name = file_name.replace('2022', '2023')
dst_file_path = os.path.join(dst_folder, new_file_name)
replace_text_in_excel(new_file_path, '2022', '2023')
# 删除临时副本
os.remove(new_file_path)
# 调用函数,传入源文件夹和目标文件夹路径
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\健康数据上报'
src_folder = path+r'\01原始'
dst_folder =path+r'\02新的'
os.makedirs(dst_folder,exist_ok=True)
process_files(src_folder, dst_folder)
结果显示:
![](https://i-blog.csdnimg.cn/direct/67ef54143db644a28d68d20f4ea55ef1.png)
![](https://i-blog.csdnimg.cn/direct/444b3f5094514b6ba7426b6aa581c6fe.png)
文件名的年份与文件第一行标题的年份都改过了(在去年的数字基础上+1)
![](https://i-blog.csdnimg.cn/direct/0d87b6b9efd54da48f449fd26e79558a.png)
发送给保健老师填写
![](https://i-blog.csdnimg.cn/direct/b836c522551542b5bff36784ce41ab17.png)
![](https://i-blog.csdnimg.cn/direct/247cc002a61c49b6ba55c4d1cb0871f0.png)
用Python快速修改模版的文件名和内部日期,可以提高数据表单的精准性,减少人工改日期的繁琐和遗漏可能。提高办公效率