【辦公類-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
繁體地址,請注明出處:http://hk.pswp.cn/web/83253.shtml
英文地址,請注明出處:http://en.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. **插槽系…