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