
相信大家最近都快被python煩死了,朋友圈,公眾號推文,小視頻上都是關于python的廣告,什么面試錄取會用python的人,剛來的同事因為會用python升職加薪啦等等。但是小編覺得,python就是一款工具,最大的特點是它能幫我們解決那些重復性工作,解放我們雙手。下面,小編給大家分享的這篇文章就是關于python辦公自動化的,希望能對大家有所幫助。
以下文章來源: 早起Python
作者:陳熹
大家好,又到了Python辦公自動化系列。
今天分享一個真實的辦公自動化需求,大家一定要仔細閱讀需求說明,在理解需求之后即可體會Python的強大!
首先我們來看下今天的需求,有一份檔案記錄總表的Excel工作簿, 每天會根據當天日期建立新表,每天的表格內包含所有檔案信息,同時也有可能會添加新的檔案名。同個年度的總表在年末可能會有兩、三百個工作表,同時每個表中可能也存在千余份檔案信息。表格形式如下(為了直觀呈現本例以7個工作表和十余份檔案的形式呈現)
需要完成的操作:為了方便審查特定檔案信息,需要給出檔案名后生成一份新表,該表包含指定檔案在所有日期(即所有工作表)中的記錄。最終結果如下(以檔案x003為例):
也就是老板說:給我把這幾百個表格中所有包含檔案x003的相關數據全部找到并整理個新的表格給我!
正式寫代碼前可以把需求分析清楚,將復雜問題簡單化。
說白了,這個需求要求把所有日期工作表中的特定行都提取出來整合成一個新表。那么我們可以遍歷每一張表,然后遍歷第一列(名稱列,也可以看作A列)每一個有數據的單元格,如果單元格中的文字為我們需要的檔案名,就把這一行提取出來放到新的表格中,進一步梳理步驟為
建立一個新的EXCEL工作簿
新表的表頭和檔案記錄Excel中的一樣,也是名稱、配置、提交日期等
遍歷檔案記錄Excel的每一張工作表sheet,再遍歷第一列每一個有數據的單元格,對內容進行判斷
找到符合條件的單元格后獲取行號,根據行號將當前表中的特定行提取出來,并將行追加新創建的表中
分析清楚就可以著手寫代碼了
首先導入需要的庫本例中涉及舊表的打開和新表的創建,因此需要從openpyxl導入load_workbook和Workbook(如果是ppt和word用到的模塊就更智能了,一個方法就能搞定)
from openpyxl import load_workbook, Workbook
接著導入舊表及創建新表
# 從桌面上獲取總表 filepath = r'C:\Users\chenx\Desktop\臺賬.xlsm' # 根據實際情況進行修改 workbook = load_workbook(filepath) # 創建新的Excel工作簿獲取到工作表 new_workbook = Workbook() new_sheet = new_workbook.active # 給新表寫入表頭 new_headers = ['名稱', '配置', '提交日期', '受限操作', '操作時間', '狀態', '存儲位置'] new_sheet.append(new_headers)
現在是核心步驟:多次遍歷,可以用workbook.sheetnames獲取工作簿所有工作表名稱的列表,然后遍歷即可
for i in workbook.sheetnames: sheet = workbook[i] # 獲取檔案名稱所在列 names = sheet['A']
按照前面的分析,需要遍歷名稱列,判斷每一個單元格的值是不是需要的檔案名。這里應注意,如果已經循環到需要的單元格,就可以停止循環了,但一定要把符合單元格的行號傳遞給一個變量做記錄,不然一旦break出循環就沒有記憶了
flag = 0 for cell in names: if cell.value == keyword: # 這里的keyword就是檔案名,可以以 檔案x003 為例 flag = cell.row break
獲得到符合條件的行號后用sheet[flag]就可以拿到符合行了。openpyxl不支持舊表的一整行寫入新表,因此應對策略就是將這一行的所有單元格具體值組裝成一個列表,用sheet.append(列表)的方法寫入新表,遍歷部分的完整代碼如下:
for i in workbook.sheetnames: sheet = workbook[i] names = sheet['A'] flag = 0 for cell in names: if cell.value == keyword: flag = cell.row break if flag: # 如果flag沒有被修改則不需要順序進行下列代碼 data_lst = [] for cell in sheet[flag]: # 這里加上一個對內容的判斷,是讓無內容的行直接放空,而不是寫入一個 none if cell.value: data_lst.append(str(cell.value)) else: data_lst.append(' ') new_sheet.append(data_lst)
最后記得保存
new_workbook.save(r'C:\Users\chenx\Desktop\臺賬查詢.xlsx')
這是經過一定改編的真實案例,可見Python自動化辦公確實能夠幫助我們解放自己的雙手,不過在寫自動化腳本之前也要先拆分任務,明確思路再進行,如果對本文的代碼和數據感興趣可以在后臺回復自動化獲取。最后還是希望大家能夠理解Python辦公自動化的一個核心就是批量操作-解放雙手,讓復雜的工作自動化!
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25