此篇文章主要是給大家介紹了Python辦公系統Word轉Excel文件批量編輯實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪。
序言
小伙伴們好,今日有個公務員的小伙伴們授權委托我給他幫幫忙,應該是有一份Word(因為涉及到文檔私秘因此原文中具體內容已經做了改動)
一共有近2600條類似格式的表格細欄,每個欄目包括的信息有:
日期
發文單位
文號
標題
簽收欄
需要提取其中加粗的這三項內容到Excel表格中存儲,表格樣式如下:
也就是需要將收文時間、文件標題、文號填到指定位置,同時需要將時間修改為標準格式,如果是完全手動復制和修改時間,依照一個條目10s的時間計算,一分鐘可以完成6條,那么最快也需要:
而這類格式規整的文件整理非常適合用Python來執行,好的那么接下來請Python出場,必要的信息我在代碼中以注釋信息呈現。
首先使用Python將Word文件導入
#導入需要的庫docx from docx import Document #指定文件存放的路徑 path=r'C:Usersword.docx' #讀取文件 document=Document(path) #讀取word中的所有表格 tables=document.tables
再把問題逐個劃分,首先嘗試獲取第一張表第一個文件條目的三個所需信息
#獲取第一張表
table0=tables[0] row和cell解析所需內容 注意觀察表格,按照row和cell把所需內容解析清楚
仔細觀察可以發現一個文件條目占據了3行,所以對表格全部行循環迭代時可以設步長為3
#在全局放一個變量用來計數填序號
n=0 for i in range(0,len(table0.rows)+1,3): #日期 date=table0.cell(i,1).text #標題 title=table0.cell(i+1,1).text.strip() #文號 dfn=tables[j].cell(i,3).text.strip() print(n,date,tite,dfn)
接下來需要解決的是,時間我們獲取的是2/1這種日/月的形式。我們需要轉化成YYYY-MM-DD格式,而這利用到datetime包的strptime和strftime函數:
strptime:解析字符串中蘊含的時間
strftime:轉化成所需的時間格式
import datetime n=0 for i in range(0,len(table0.rows)+1,3): #日期 date=table0.cell(i,1).text #有的條目時間是空的,這里不做過多判別 if'/'in date: date=datetime.datetime.strptime(date,'%d/%m').strftime('2020-%m-%d') else: date='-' #標題 title=table0.cell(i+1,1).text.strip() #文號 dfn=tables[j].cell(i,3).text.strip() print(n,date,tite,dfn) 這樣一張表的內容解析就完成了,注意這里用的是table[0]即第一張表,遍歷所有的表加一個嵌套循環就可以,另外也可以捕獲異常增加程序靈活性 n=0 for j in range(len(tables)): for i in range(0,len(tables[j].rows)+1,3): try: #日期 date=tables[j].cell(i,1).text if'/'in date: date=datetime.datetime.strptime(date,'%d/%m').strftime('2020-%m-%d') else: date='-' #標題 title=tables[j].cell(i+1,1).text.strip() #文號 dfn=tables[j].cell(i,3).text.strip() n+=1 print(n,date,title,dfn) except Exception as error: #捕獲異常,也可以用log寫到日志里方便查看和管理 print(error) continue 信息解析和獲取完成就可以導出了,用到的包是openpyxl from openpyxl import Workbook #實例化 wb=Workbook() #獲取當前sheet sheet=wb.active #設立表頭 header=['序號','收文時間','辦文編號','文件標題','文號','備注'] sheet.append(header) 內層解析循環 在最內層解析循環的末尾加上如下代碼即可 row=[n,date,'',title,dfn,''] sheet.append(row) 線程的最后記得保存 wb.save(r'C:Users20200420.xlsx') 運行時間在10分鐘左右,大概離開了一會程序就執行結束了 最后附上完整代碼,代碼很簡單,理清思路最重要 from docx import Document import datetime from openpyxl import Workbook wb=Workbook() sheet=wb.active header=['序號','收文時間','辦文編號','文件標題','文號','備注'] sheet.append(header) path=r'C:Usersword.docx' document=Document(path) tables=document.tables n=0 for j in range(len(tables)): for i in range(0,len(tables[j].rows)+1,3): try: #日期 date=tables[j].cell(i,1).text if'/'in date: date=datetime.datetime.strptime(date,'%d/%m').strftime('2020-%m-%d') else: date='-' #標題 title=tables[j].cell(i+1,1).text.strip() #文號 dfn=tables[j].cell(i,3).text.strip() n+=1 print(n,date,title,dfn) row=[n,date,'',title,dfn,''] sheet.append(row) except Exception as error: #捕獲異常,也可以用log寫到日志里方便查看和管理 print(error) continue wb.save(r'C:Users20200420.xlsx')
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128704.html
本文主要是給大家介紹了Python辦公系統從Excel中測算整理資料并載入Word實例詳細說明,感興趣的小伙伴值得借鑒參考一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪 序言 在前面幾個月的文中大家介紹了怎樣從Word表格中獲取特定數據信息并依據文件格式儲存到Excel中,今日我們將要再度以一名閱讀者所提出的實際需求來介紹怎么使用Python從Excel中測算、整理資料并載入Wo...
摘要:文章目錄隱藏第一迅捷轉換器的版本介紹第二迅捷轉換器的功能體驗第一迅捷轉換器的版本介紹老蔣有看到,迅捷轉換器的版本有多個版本。而且老蔣有在體驗這款迅捷轉換軟件的時候,速度確實提高不少,那種在線轉換的時候速度特別慢。由于工作的需要,我們很多網友朋友可能會希望將PDF文件格式轉換成Word、PPT、TXT 或者 Excel等格式。我們一般是用什么軟件操作的呢?比如老蔣每次遇到這樣的需求,就會找網上...
摘要:總結整個過程的難點在于獲取文件對象,從數據中取值然后在按取出,這樣我們就可以從后臺上傳文件,然后進行批量導入數據庫,其他數據格式只需要改和中的數據字段就可以 第一篇(從django后臺解析excel數據批量導入數據庫) 文章會在github中持續更新 作者: knthony github 聯系我 1.django 如何從后臺上傳excel中批量解析數據 要從django后臺導入...
此篇文章主要是給大家介紹了Python辦公系統批量編輯文檔完成實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早工作上得到晉升?! ∏把浴 ≌f起在工作上最讓人頭大的便是用這樣的方法解決一大堆文件夾中文檔,這其實并不難,但是卻繁。因此當遇到腳踏式的操作過程中一定要注意應用Python來有效懶惰!這次我會以解決微博熱搜榜數據信息來實例怎么使用Python批...
摘要:特別注意當用模式載入時,跟都是對象??梢允褂幂d入已經存在的表。我們的目的是從源表中提取信息并批量復制到目標表中,所以我們首先定義一些變量。最后保存目標就可以了。 現代生活中,我們很難不與excel表打交道,excel表有著易學易用的優點,只是當表中數據量很大,我們又需要從其他表冊中復制粘貼一些數據(比如身份證號)的時候,我們會越來越倦怠,畢竟我們不是機器,沒法長時間做某種重復性的枯燥操...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02