【办公类-48-04】202506每月电子屏台账汇总成docx-5(问卷星下载5月范围内容,自动获取excel文件名,并转移处理)

背景需求:

1-4月电子屏表格,都是用这个代码将EXCEL数据整理成分类成3个WORD表格。

【办公类-48-04】20250118每月电子屏台账汇总成docx-4(提取EXCLE里面1月份的内容,自制月份文件夹)-CSDN博客文章浏览阅读1.2k次,点赞29次,收藏9次。【办公类-48-04】20250118每月电子屏台账汇总成docx-4(提取EXCLE里面1月份的内容,自制月份文件夹) https://blog.csdn.net/reasonsummer/article/details/145230274?spm=1011.2415.3001.5331

存在问题:

每月都要把下载EXCEL名称复制到代码内,有点麻烦。

我希望只要把EXCEL放到文件夹下,程序就能自动转移到2025年5月文件夹内。并识别它做三个WORD表格

deepseek的答案

20250603,获取5月的所有EXCEL,导出文本EXCEL

放到一级文件夹下

然后用代码慢慢生成

'''
电子屏台账2025年5月,自动提取当月内容(在XX之间的内容),制作当月文件夹
把EXCEL放在一级文件夹下,自动读取它并转移到2025年5月文件夹
自动识别2025年5月文件夹内的EXCEL,开始制作三个园区台账WORD,并打包rar
作者:星火讯飞、deepseek、阿夏
时间:20240603
'''print('----1、读取EXCEL内容并合并成关键列表------')import os
import shutilimport pandas as pd
path= r'C:\Users\jg2yXRZ\OneDrive\桌面\电子屏每月2024'year=2025
# int(input('几年(2025?\n'))
month=int(input('几月?(4)\n'))garden=['总园', '一分园','二分园']folder_path = path+fr"\{year}年{month:02}月"
os.makedirs(folder_path,exist_ok=True)folder_name=folder_path+fr'\(以此为准){year}年{month:02}月电子屏台账(三个园区)'
os.makedirs(folder_name,exist_ok=True)# 把EXCLe复制到2025年1月文件夹
file_name = '279855026_20240901Jg2y各园部重点部位电子屏、播控系统_956f958e-4232-47d7-a6bb-2c086e4ade44.xlsx'# 把问卷星下载的xlsx转移到2025年1月文件夹内
# 定义源文件和目标文件夹路径
src_file = path+fr'\{file_name}'
dst_folder = folder_path
dst_file = os.path.join(dst_folder, f'{file_name}') 
# 移动文件到目标文件夹
shutil.move(src_file, dst_file)# 279855026_按文本_20240901Jg2y各园部重点部位电子屏、播控系统_83_83.xlsx'
file_path = os.path.join(folder_path, file_name)
print(file_path)# 按行读取
df = pd.read_excel(file_path)
filtered_rows = df.iloc[:, 6:22].values.tolist()  # G列到W列的数据,按行转换为列表
# print(rows)# 提取符合的日期print('----1、初始化一个空列表来存储符合条件的行(数字是01的月份)------')
# 
rows = []# 遍历每一行
for row in filtered_rows:# 获取第9个元素(索引从0开始,所以是14)cell_value = str(row[9])# print(cell_value)# 检查第5-6个字符是否为“01”if cell_value[5:7] == f"{month:02}":rows.append(row)# # 打印符合条件的行
print(rows)for x in range(len(garden)):all_data=[]for y in range(len(rows)):if rows[y][0][2:]==garden[x]:# print(rows[y])for row in rows[y][1:]:# print(row)if row=='(跳过)':passelse:    all_data.append(row)# print(all_data)# print(len(all_data))# 462print('----1、读取EXCEL内容并合并成关键列表------')import pandas as pd# # 每行有几个内容h=7# print(h)# # 拆分成7个一组nested_lists = [all_data[i:i+h] for i in range(0, len(all_data), h)]# print(nested_lists)# print(len(nested_lists))
#     # #  26# 如果条数不满20条,只有一页if len(nested_lists) <=20:print(f"{len(nested_lists)} 在范围 0-20 内")kong = 20 - len(nested_lists)print(kong)Y = 1# 判断多页情况下,最后一页是否能够凑满20行,凑不满,补空else: for z in range(20, 220, 20):if z < len(nested_lists) <= z + 20:# 出现过正好40条,只有两页,但出现了第3空页,少了小于等于z+2-print(f"{len(nested_lists)} 在范围 {z}-{z+20} 内")# 补多少的空格kong = z + 20 - len(nested_lists)print(kong)# 有几页Y = int((z + 20) / 20)# 一个列表里面有7个空w = [''] * h# 需要14个这种7空的嵌套列表v = [w] * kong# print(v)# 把实际的填写内容+补充的空格,凑满20的倍数页nested_lists=nested_lists+v# print(nested_lists)# print(len(nested_lists))#  80  # 拆分合并每个格子的内容new=[]for n in range(len(nested_lists)):    # 66行# 如果读取的第一个内容为空if nested_lists[n][1]=='':for g in range(h):new.append('')else:# 添加序号不用加0new.append(n+1)# 电子屏ID '总园 校门口电子屏 402XXXXXXXX TY2021XXXXXX'    split_list = nested_lists[n][1].split(' ')# print(split_list)# 将空格切开变成列表new.append(split_list[2])# 资产编号	new.append(split_list[3])   # 时间	(日期+时间new.append(nested_lists[n][2][:4]+'年'+nested_lists[n][2][5:7]+'月'+ \nested_lists[n][2][-2:]+'日'+str(nested_lists[n][3])+':'+str('%02d'%nested_lists[n][4]))# 操作内容	new.append(nested_lists[n][5])# 进出人员	(负责人)new.append(nested_lists[n][0])# 审核领导(园所管理主任)new.append(nested_lists[n][6])print(new)print(len(new))# 560 /7/20=4页print('----2、读取docx模板的数量------')# 读取word的行列数from docx import Documentdoc_name = '电子屏台账模板.docx'doc_path = os.path.join(path, doc_name)# 打开文档doc = Document(doc_path)# 获取第一个表格table = doc.tables[0]# 获取表格的行数和列数num_rows = len(table.rows)num_cols = len(table.columns)# print("行数:", num_rows)# # 22# print("列数:", num_cols)# 7# 每页格子的坐标bg=[]for a in range(2,22):for b in range(7):bg.append('{}{}'.format('%02d'%a,'%02d'%b))# print(bg)# print(len(bg))# 140# 拆分成4页每页20个个一组c=int(len(new)/Y)content_lists = [new[i:i+c] for i in range(0, len(new), c)]# print(content_lists)# print(len(content_lists))# 15# 4  拆20行内容一组,一共4个嵌套列表# 列表new内容写入docx模板,第一页写入20行*7的内容import os,timefrom docx import Documentfrom docx.shared import Pt, RGBColorfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENTfrom docx.oxml.ns import qnfrom docx2pdf import convertfrom PyPDF2 import PdfMerger# 多少份(必须双数)ziti = '宋体'size = 14imagePath = folder_path+r'\零时Word'if not os.path.exists(imagePath):os.makedirs(imagePath)for n in range(len(content_lists)):doc = Document(doc_path)# for b in range(0):table = doc.tables[0]for t in range(len(bg)):pp, qq, k = int(bg[t][0:2]), int(bg[t][2:4]), content_lists[n][t]run = table.cell(pp, qq).paragraphs[0].add_run(str(k))run.font.name = zitirun.font.size = Pt(size)run.bold = Falserun.font.color.rgb = RGBColor(0, 0, 0)r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), ziti)table.cell(pp, qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTERdoc.save(imagePath+fr'\{n:02d}.docx')time.sleep(2)print('-----3、创建一个带页码的docx,合并word模板------')from docx import Documentfrom docx.enum.section import WD_SECTION_STARTimport osfrom docx.shared import Cm# # 创建一个带页码的空Document对象,并把页眉页脚边距改小source_dir = imagePath  # 文件夹路径combined_doc = Document(path+r'\页码.docx')# 读取“整理”里面的docx的内容docx_files = []for file_name in os.listdir(source_dir):if file_name.endswith(".docx"):docx_files.append(os.path.join(source_dir, file_name))for file in docx_files:doc = Document(file)for element in doc.element.body:combined_doc.element.body.append(element)    output_file = folder_name + fr'\{year}年{month:02}月({garden[x]})电子屏台账.docx' # 输出文件路径output_file1 = folder_name + fr'\{year}年{month:02}月({garden[x]})电子屏台账2.docx' # 输出文件路径combined_doc.save(output_file)time.sleep(2)print('-----4、把“合并docx"的第一段回车删除。(页码模板自带)---')doc = Document(output_file)# 删除第1个段落(都只有一个回车)for i in [0]:dell_paragraph = doc.paragraphs[i]doc._element.body.remove(dell_paragraph._element)# 保存文档doc.save(output_file)# time.sleep(2)print('-----5、替换园区---')import win32com.client as win32# 创建Word应用程序对象word_app = win32.gencache.EnsureDispatch("Word.Application")# 打开Word文档doc = word_app.Documents.Open(output_file)# 创建Find对象find_object = doc.Content.Find# 设置查找和替换参数find_object.Text = "园区"find_object.Replacement.Text = garden[x]find_object.Forward = Truefind_object.Wrap = 1find_object.Format = Falsefind_object.MatchCase = Falsefind_object.MatchWholeWord = Falsefind_object.MatchWildcards = Falsefind_object.MatchSoundsLike = Falsefind_object.MatchAllWordForms = False# 执行查找和替换find_object.Execute(Replace=2)# 保存文档doc.SaveAs(output_file)# 关闭文档和应用程序doc.Close()word_app.Quit()time.sleep(2)# 删除word临时文件夹import shutilshutil.rmtree(imagePath)# 定义要打包的文件夹名称
shutil.make_archive(folder_name, 'zip', folder_name)

excel转移到2025年05月文件夹内。

最后效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【websocket】安装与使用

websocket安装与使用 1. 介绍2. 安装3. websocketpp常用接口4. Websocketpp使用4.1 服务端4.2 客户端 1. 介绍 WebSocket 是从 HTML5 开始支持的一种网页端和服务端保持长连接的 消息推送机制。 传统的 web 程序都是属于 “一问一答” 的形式&#xff0c;即客户端给服务器发送…

微算法科技(NASDAQ:MLGO)基于信任的集成共识和灰狼优化(GWO)算法,搭建高信任水平的区块链网络

随着数字化转型的加速&#xff0c;区块链技术作为去中心化、透明且不可篡改的数据存储与交换平台&#xff0c;正逐步渗透到金融、供应链管理、物联网等多个领域&#xff0c;探索基于信任的集成共识机制&#xff0c;并结合先进的优化算法来提升区块链网络的信任水平&#xff0c;…

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…

贝叶斯优化+LSTM+时序预测=Nature子刊!

贝叶斯优化与LSTM的融合在时间序列预测领域取得了显著成效&#xff0c;特别是在处理那些涉及众多超参数调整的复杂问题时。 1.这种结合不仅极大提高了预测的精确度&#xff0c;还优化了模型训练流程&#xff0c;提升了效率和成本效益。超参数优化的新篇章&#xff1a;LSTM因其…

AWSLambda之设置时区

目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可&#xff0c;即Asia/Shanghai。 参考 使用 Lambda 环境变量

RAG系统向量数据库选型与Prompt Engineering鲁棒性测试实践

引言 在AI应用不断落地的今天&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;和Prompt Engineering&#xff08;提示工程&#xff09;成为大模型工程师和测试工程师的核心武器。 一方面&#xff0c;RAG系统依赖强大的向量数据…

2.Socket 编程 UDP

1.UDP网络编程 0.背景知识 自实现IP转化 相关函数理解 IP相关理解 1. V2版本 - DictServer封装版 实现一个简单的英译汉的网络字典 Dict.hpp dictionary.txt InetAddr.hpp • 在 InetAddr 中&#xff0c;重载一下方便对用户是否是同一个进行比较 Log.hpp makefile Mutex.hpp…

数据可视化交互

目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装 pyecharts 二、下载数据 三、实验任务 实验 1&#xff1a;AQI 横向对比条形图 代码说明&#xff1a; 运行结果&#xff1a; 实验 2&#xff1a;AQI 等级分布饼图 实验 3&#xff1a;多城市 AQI…

【MATLAB去噪算法】基于CEEMDAN联合小波阈值去噪算法(第四期)

CEEMDAN联合小波阈值去噪算法相关文献 一、EMD 与 EEMD 的局限性 &#xff08;1&#xff09;EMD (经验模态分解) 旨在自适应地将非线性、非平稳信号分解成一系列 本征模态函数 (IMFs)&#xff0c;这些 IMFs 从高频到低频排列。 核心问题&#xff1a;模态混合 (Mode Mixing) 同…

大话软工笔记—架构模型

1. 架构模型1—拓扑图 &#xff08;1&#xff09;拓扑图概念 拓扑图&#xff0c;将多个软件系统用网络图连接起来的表达方式。 &#xff08;2&#xff09;拓扑图分类 总线型结构 比较普遍采用的方式&#xff0c;将所有的系统接到一条总线上。 星状结构 各个系统通过点到…

24-Oracle 23 ai ​Lock-Free Reservations​(无锁列值保留)

数据库领域为了解决ACID的平衡&#xff0c;尝试了各种锁、各种模式&#xff0c; 引擎技术特性、厂家实现方式各放异彩&#xff0c;被各种锁折磨的小伙伴&#xff0c;是不是感同身受。 一、数据库锁 1. 锁的类型与特点 ​全局锁​&#xff1a;锁定整个数据库实例&#xff0c;备…

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding

从零写一个ALSA声卡驱动学习(1)

前言&#xff1a; 本文档描述了如何编写 ALSA&#xff08;高级 Linux 音频架构&#xff09;驱动程序。文档主要聚焦于 PCI 声卡的实现。对于其他类型的设备&#xff0c;可能会使用不同的 API。不过&#xff0c;至少 ALSA 的内核 API 是一致的&#xff0c;因此本文档在编写这些驱…

链结构与工作量证明7️⃣:用 Go 实现比特币的核心机制

链结构与工作量证明:用 Go 实现比特币的核心机制 如果你用 Go 写过区块、算过哈希,也大致理解了非对称加密、数据序列化这些“硬核知识”,那么恭喜你,现在我们终于可以把这些拼成一条完整的“区块链”。 不过别急,这一节我们重点搞懂两件事: 区块之间是怎么连接成“链”…

深入理解 React 样式方案

React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…

YOLO电力物目标检测训练

最近需要进行电力物检测相关的业务&#xff0c;因此制作了一个电力物数据集&#xff0c;使用YOLO目标检测方法进行实验&#xff0c;记录实验过程如下&#xff1a; 数据集标注 首先需要对电力物相关设备进行标注&#xff0c;这里我们选用labelme进行标注&#xff0c;使用无人机…

从阿里云域名解析异常事件看下域名解析过程

近日阿里云核心域名aliyuncs.com解析异常&#xff0c;涉及众多依赖阿里云服务的网站和应用&#xff0c;故障从发现到修复耗时5个多小时。本文简要分析下整个事件的过程&#xff0c;并分析域名解析的过程&#xff0c;了解根域名服务器在其中的作用&#xff0c;以了解。 1、aliyu…

应用分享 | 精准生成和时序控制!AWG在确定性三量子比特纠缠光子源中的应用

在量子技术飞速发展的今天&#xff0c;实现高效稳定的量子态操控是推动量子计算、量子通信等领域迈向实用化的关键。任意波形发生器&#xff08;AWG&#xff09;作为精准信号控制的核心设备&#xff0c;在量子实验中发挥着不可或缺的作用。丹麦哥本哈根大学的研究团队基于单个量…

基于规则的自然语言处理

基于规则的自然语言处理 规则方法形态还原&#xff08;针对英语、德语、法语等&#xff09;中文分词切分歧义分词方法歧义字段消歧方法分词带来的问题 词性标注命名实体分类机器翻译规则方法的问题 规则方法 以规则形式表示语言知识&#xff0c;强调人对语言知识的理性整理&am…

Vue Fragment vs React Fragment

文章目录 前言&#x1f9e9; 一、概念对比&#xff1a;Vue Fragment vs React Fragment&#x1f4e6; 二、使用示例对比✅ Vue 3 中使用 Fragment✅ React 中使用 Fragment &#x1f50d; 三、差异解析1. **使用方式**2. **传递属性&#xff08;如 key&#xff09;**3. **插槽系…