日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
老板讓我從幾百個(gè)Excel中查找數(shù)據(jù),我用Python一分鐘搞定!

 大家好,又到了Python辦公自動(dòng)化系列。

10多年的鄂城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整鄂城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“鄂城網(wǎng)站設(shè)計(jì)”,“鄂城網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

今天分享一個(gè)真實(shí)的辦公自動(dòng)化需求,大家一定要仔細(xì)閱讀需求說(shuō)明,在理解需求之后即可體會(huì)Python的強(qiáng)大!

一、需求說(shuō)明

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

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

也就是老板說(shuō):給我把這幾百個(gè)表格中所有包含檔案x003的相關(guān)數(shù)據(jù)全部找到并整理個(gè)新的表格給我!

二、步驟分析

正式寫(xiě)代碼前可以把需求分析清楚,將復(fù)雜問(wèn)題簡(jiǎn)單化。

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

  • 建立一個(gè)新的EXCEL工作簿
  • 新表的表頭和檔案記錄Excel中的一樣,也是名稱、配置、提交日期等
  • 遍歷檔案記錄Excel的每一張工作表sheet,再遍歷第一列每一個(gè)有數(shù)據(jù)的單元格,對(duì)內(nèi)容進(jìn)行判斷
  • 找到符合條件的單元格后獲取行號(hào),根據(jù)行號(hào)將當(dāng)前表中的特定行提取出來(lái),并將行追加新創(chuàng)建的表中

分析清楚就可以著手寫(xiě)代碼了

三、Python實(shí)現(xiàn)

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

 
 
 
 
  1. from openpyxl import load_workbook, Workbook 

接著導(dǎo)入舊表及創(chuàng)建新表

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

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

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

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

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

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

 
 
 
 
  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沒(méi)有被修改則不需要順序進(jìn)行下列代碼 
  10.         data_lst = [] 
  11.         for cell in sheet[flag]: 
  12.             # 這里加上一個(gè)對(duì)內(nèi)容的判斷,是讓無(wú)內(nèi)容的行直接放空,而不是寫(xiě)入一個(gè) 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\臺(tái)賬查詢.xlsx') 

小結(jié)

這是經(jīng)過(guò)一定改編的真實(shí)案例,可見(jiàn)Python自動(dòng)化辦公確實(shí)能夠幫助我們解放自己的雙手,不過(guò)在寫(xiě)自動(dòng)化腳本之前也要先拆分任務(wù),明確思路再進(jìn)行,如果對(duì)本文的代碼和數(shù)據(jù)感興趣可以在后臺(tái)回復(fù)自動(dòng)化獲取。最后還是希望大家能夠理解Python辦公自動(dòng)化的一個(gè)核心就是批量操作-解放雙手,讓復(fù)雜的工作自動(dòng)化!


網(wǎng)站欄目:老板讓我從幾百個(gè)Excel中查找數(shù)據(jù),我用Python一分鐘搞定!
瀏覽地址:http://m.5511xx.com/article/coesieg.html