成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

老板讓我從幾百個Excel中查找數據,我用Python一分鐘搞定!

開發 后端
大家好,又到了Python辦公自動化系列。今天分享一個真實的辦公自動化需求,大家一定要仔細閱讀需求說明,在理解需求之后即可體會Python的強大!

 大家好,又到了Python辦公自動化系列。

[[336070]]

今天分享一個真實的辦公自動化需求,大家一定要仔細閱讀需求說明,在理解需求之后即可體會Python的強大!

一、需求說明

首先我們來看下今天的需求,有一份檔案記錄總表的Excel工作簿, 每天會根據當天日期建立新表,每天的表格內包含所有檔案信息,同時也有可能會添加新的檔案名。同個年度的總表在年末可能會有兩、三百個工作表,同時每個表中可能也存在千余份檔案信息。表格形式如下(為了直觀呈現本例以7個工作表和十余份檔案的形式呈現)

 

 

 

 

需要完成的操作:為了方便審查特定檔案信息,需要給出檔案名后生成一份新表,該表包含指定檔案在所有日期(即所有工作表)中的記錄。最終結果如下(以檔案x003為例):

 

 

 

 

也就是老板說:給我把這幾百個表格中所有包含檔案x003的相關數據全部找到并整理個新的表格給我!

二、步驟分析

正式寫代碼前可以把需求分析清楚,將復雜問題簡單化。

說白了,這個需求要求把所有日期工作表中的特定行都提取出來整合成一個新表。那么我們可以遍歷每一張表,然后遍歷第一列(名稱列,也可以看作A列)每一個有數據的單元格,如果單元格中的文字為我們需要的檔案名,就把這一行提取出來放到新的表格中,進一步梳理步驟為

  • 建立一個新的EXCEL工作簿
  • 新表的表頭和檔案記錄Excel中的一樣,也是名稱、配置、提交日期等
  • 遍歷檔案記錄Excel的每一張工作表sheet,再遍歷第一列每一個有數據的單元格,對內容進行判斷
  • 找到符合條件的單元格后獲取行號,根據行號將當前表中的特定行提取出來,并將行追加新創建的表中

分析清楚就可以著手寫代碼了

三、Python實現

首先導入需要的庫本例中涉及舊表的打開和新表的創建,因此需要從openpyxl導入load_workbook和Workbook(如果是ppt和word用到的模塊就更智能了,一個方法就能搞定)

 

  1. from openpyxl import load_workbook, Workbook 

接著導入舊表及創建新表

 

  1. # 從桌面上獲取總表 
  2. filepath = r'C:\Users\chenx\Desktop\臺賬.xlsm' # 根據實際情況進行修改 
  3. workbook = load_workbook(filepath) 
  4. # 創建新的Excel工作簿獲取到工作表 
  5. new_workbook = Workbook() 
  6. new_sheet = new_workbook.active 
  7.  
  8. # 給新表寫入表頭 
  9. new_headers = ['名稱''配置''提交日期''受限操作''操作時間''狀態''存儲位置'
  10. new_sheet.append(new_headers) 

現在是核心步驟:多次遍歷,可以用workbook.sheetnames獲取工作簿所有工作表名稱的列表,然后遍歷即可

 

  1. for i in workbook.sheetnames: 
  2.     sheet = workbook[i] 
  3.     # 獲取檔案名稱所在列 
  4.     names = sheet['A'

按照前面的分析,需要遍歷名稱列,判斷每一個單元格的值是不是需要的檔案名。這里應注意,如果已經循環到需要的單元格,就可以停止循環了,但一定要把符合單元格的行號傳遞給一個變量做記錄,不然一旦break出循環就沒有記憶了

 

  1. flag = 0 
  2. for cell in names: 
  3. if cell.value == keyword: # 這里的keyword就是檔案名,可以以 檔案x003 為例 
  4.     flag = cell.row 
  5.     break 

獲得到符合條件的行號后用sheet[flag]就可以拿到符合行了。openpyxl不支持舊表的一整行寫入新表,因此應對策略就是將這一行的所有單元格具體值組裝成一個列表,用sheet.append(列表)的方法寫入新表,遍歷部分的完整代碼如下:

 

  1. for i in workbook.sheetnames: 
  2.     sheet = workbook[i] 
  3.     names = sheet['A'
  4.     flag = 0 
  5.     for cell in names: 
  6.         if cell.value == keyword: 
  7.             flag = cell.row 
  8.             break 
  9.     if flag:   # 如果flag沒有被修改則不需要順序進行下列代碼 
  10.         data_lst = [] 
  11.         for cell in sheet[flag]: 
  12.             # 這里加上一個對內容的判斷,是讓無內容的行直接放空,而不是寫入一個 none 
  13.             if cell.value:   
  14.                 data_lst.append(str(cell.value)) 
  15.             else
  16.                 data_lst.append(' '
  17.         new_sheet.append(data_lst) 

最后記得保存

 

  1. new_workbook.save(r'C:\Users\chenx\Desktop\臺賬查詢.xlsx'

小結

這是經過一定改編的真實案例,可見Python自動化辦公確實能夠幫助我們解放自己的雙手,不過在寫自動化腳本之前也要先拆分任務,明確思路再進行,如果對本文的代碼和數據感興趣可以在后臺回復自動化獲取。最后還是希望大家能夠理解Python辦公自動化的一個核心就是批量操作-解放雙手,讓復雜的工作自動化!

責任編輯:華軒 來源: 早起Python
相關推薦

2011-02-21 17:48:35

vsFTPd

2021-08-16 10:40:36

數據庫耦合

2015-11-12 10:32:40

GitHub控制系統分布式

2009-12-02 17:21:19

Cisco路由器配置

2017-03-30 19:28:26

HBase分布式數據

2017-02-21 13:00:27

LoadAverage負載Load

2018-07-31 16:10:51

Redo Undo數據庫數據

2018-06-26 05:23:19

線程安全函數代碼

2017-07-06 08:12:02

索引查詢SQL

2020-05-21 19:46:19

區塊鏈數字貨幣比特幣

2022-07-18 06:16:07

單點登錄系統

2025-05-26 09:25:00

Web 接口開發Redis

2018-12-12 22:51:24

Java包裝語言

2020-07-17 07:44:25

云計算邊緣計算IT

2016-09-12 17:28:45

云存儲應用軟件存儲設備

2020-07-09 07:37:06

數據庫Redis工具

2016-12-21 15:08:14

數據庫垂直拆分

2016-12-16 11:05:00

分布式互斥線程

2021-08-06 08:50:45

加密貨幣比特幣區塊鏈

2018-03-27 09:28:33

緩存策略系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 爱综合| 成人国产精品久久 | 91在线电影 | av在线天堂网 | 99精品欧美一区二区蜜桃免费 | 久久久久久久91 | 国产一区二区三区免费观看在线 | 国产亚洲精品久久久久久牛牛 | 精品国产一区二区国模嫣然 | 亚洲精品一区二区三区丝袜 | 91青娱乐在线 | 国产精品久久视频 | 日韩羞羞 | 四虎影院久久 | 亚洲三区在线观看 | 国产精品一区二区久久 | 日韩精品一区二区三区在线播放 | www.亚洲一区二区 | 麻豆国产一区二区三区四区 | 色婷婷久久久亚洲一区二区三区 | 国产成人精品一区二区三区 | 久久精品视频在线观看 | 亭亭五月激情 | 国产精品精品 | 91热爆在线观看 | 瑞克和莫蒂第五季在线观看 | 日韩电影中文字幕在线观看 | 日本免费一区二区三区四区 | 亚洲综合无码一区二区 | 欧美成年人视频在线观看 | 国产一区二区中文字幕 | 久久www免费视频 | 日日操视频 | 亚洲免费一区 | 午夜免费在线观看 | 亚洲午夜精品视频 | 日韩在线 | 美女黄视频网站 | 国产中文字幕亚洲 | 亚洲高清视频在线观看 | 免费黄色大片 |