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

Python辦公自動化之從Word到Excel

開發(fā) 后端 自動化
大家好,今天有一個(gè)公務(wù)員的小伙伴委托我給他幫個(gè)忙,大概是有這樣一份Word(由于涉及文件私密所以文中的具體內(nèi)容已做修改)

 [[322971]]

大家好,今天有一個(gè)公務(wù)員的小伙伴委托我給他幫個(gè)忙,大概是有這樣一份Word(由于涉及文件私密所以文中的具體內(nèi)容已做修改)

一共有近2600條類似格式的表格細(xì)欄,每個(gè)欄目包括的信息有:

  • 日期
  • 發(fā)文單位
  • 文號
  • 標(biāo)題
  • 簽收欄

需要提取其中加粗的這三項(xiàng)內(nèi)容到Excel表格中存儲,表格樣式如下:

也就是需要將收文時(shí)間、文件標(biāo)題、文號填到指定位置,同時(shí)需要將時(shí)間修改為標(biāo)準(zhǔn)格式,如果是完全手動復(fù)制和修改時(shí)間,依照一個(gè)條目10s的時(shí)間計(jì)算,一分鐘可以完成6條,那么最快也需要:

而這類格式規(guī)整的文件整理非常適合用Python來執(zhí)行,好的那么接下來請Python出場,必要的信息我在代碼中以注釋信息呈現(xiàn)。

首先使用Python將Word文件導(dǎo)入

  1. # 導(dǎo)入需要的庫docx 
  2. from docx import Document 
  3.  
  4. # 指定文件存放的路徑 
  5. path = r'C:\Users\word.docx'  
  6.  
  7. # 讀取文件 
  8. document = Document(path) 
  9.  
  10. # 讀取word中的所有表格 
  11. tables = document.tables 

再把問題逐個(gè)劃分,首先嘗試獲取第一張表第一個(gè)文件條目的三個(gè)所需信息

  1. # 獲取第一張表 
  2. table0 = tables[0] 

仔細(xì)觀察可以發(fā)現(xiàn)一個(gè)文件條目占據(jù)了3行,所以對表格全部行循環(huán)迭代時(shí)可以設(shè)步長為3

注意觀察表格,按照row和cell把所需內(nèi)容解析清楚

  1. # 在全局放一個(gè)變量用來計(jì)數(shù)填序號 
  2. n = 0 
  3. for i in range(0, len(table0.rows) + 1, 3): 
  4.     # 日期 
  5.     date = table0.cell(i, 1).text 
  6.     # 標(biāo)題 
  7.     title = table0.cell(i + 1, 1).text.strip() 
  8.     # 文號 
  9.     dfn = tables[j].cell(i, 3).text.strip() 
  10.     print(n, date, tite, dfn) 

接下來需要解決的是,時(shí)間我們獲取的是 2/1 這種 日/月的形式。我們需要轉(zhuǎn)化成 YYYY-MM-DD格式,而這利用到datetime包的strptime和strftime函數(shù):

  • strptime: 解析字符串中蘊(yùn)含的時(shí)間
  • strftime: 轉(zhuǎn)化成所需的時(shí)間格式
  1. import datetime 
  2.  
  3. n = 0 
  4. for i in range(0, len(table0.rows) + 1, 3): 
  5.     # 日期 
  6.     date = table0.cell(i, 1).text 
  7.     # 有的條目時(shí)間是空的,這里不做過多判別 
  8.     if '/' in date
  9.         date = datetime.datetime.strptime(date'%d/%m').strftime('2020-%m-%d'
  10.     else
  11.         date = '-' 
  12.     # 標(biāo)題 
  13.     title = table0.cell(i + 1, 1).text.strip() 
  14.     # 文號 
  15.     dfn = tables[j].cell(i, 3).text.strip() 
  16.     print(n, date, tite, dfn) 

這樣一張表的內(nèi)容解析就完成了,注意這里用的是table[0]即第一張表,遍歷所有的表加一個(gè)嵌套循環(huán)就可以,另外也可以捕獲異常增加程序靈活性

  1. n = 0 
  2. for j in range(len(tables)): 
  3.     for i in range(0, len(tables[j].rows)+1, 3): 
  4.         try: 
  5.             # 日期 
  6.             date = tables[j].cell(i, 1).text 
  7.             if '/' in date
  8.                 date = datetime.datetime.strptime(date'%d/%m').strftime('2020-%m-%d'
  9.             else
  10.                 date = '-' 
  11.             # 標(biāo)題 
  12.             title = tables[j].cell(i + 1, 1).text.strip() 
  13.             # 文號 
  14.             dfn = tables[j].cell(i, 3).text.strip() 
  15.             n += 1 
  16.             print(n, date, title, dfn) 
  17.         except Exception as error: 
  18.             # 捕獲異常,也可以用log寫到日志里方便查看和管理 
  19.             print(error) 
  20.             continue 

信息解析和獲取完成就可以導(dǎo)出了,用到的包是openpyxl

  1. from openpyxl import Workbook 
  2.  
  3. # 實(shí)例化 
  4. wb = Workbook() 
  5. # 獲取當(dāng)前sheet 
  6. sheet = wb.active 
  7. # 設(shè)立表頭 
  8. header = ['序號''收文時(shí)間''辦文編號''文件標(biāo)題''文號''備注'
  9. sheet.append(header) 

在最內(nèi)層解析循環(huán)的末尾加上如下代碼即可

  1. row = [n, date' ', title, dfn, ' '
  2. sheet.append(row) 

線程的最后記得保存

  1. wb.save(r'C:\Users\20200420.xlsx'

運(yùn)行時(shí)間在10分鐘左右,大概離開了一會程序就執(zhí)行結(jié)束了

最后附上完整代碼,代碼很簡單,理清思路最重要

  1. from docx import Document 
  2. import datetime 
  3. from openpyxl import Workbook 
  4.  
  5. wb = Workbook() 
  6. sheet = wb.active 
  7. header = ['序號''收文時(shí)間''辦文編號''文件標(biāo)題''文號''備注'
  8. sheet.append(header) 
  9.  
  10.  
  11. path = r'C:\Users\word.docx' 
  12. document = Document(path) 
  13. tables = document.tables 
  14.  
  15. n = 0 
  16. for j in range(len(tables)): 
  17.     for i in range(0, len(tables[j].rows)+1, 3): 
  18.         try: 
  19.             # 日期 
  20.             date = tables[j].cell(i, 1).text 
  21.             if '/' in date
  22.                 date = datetime.datetime.strptime(date'%d/%m').strftime('2020-%m-%d'
  23.             else
  24.                 date = '-' 
  25.             # 標(biāo)題 
  26.             title = tables[j].cell(i + 1, 1).text.strip() 
  27.             # 文號 
  28.             dfn = tables[j].cell(i, 3).text.strip() 
  29.             n += 1 
  30.             print(n, date, title, dfn) 
  31.             row = [n, date' ', title, dfn, ' '
  32.             sheet.append(row) 
  33.         except Exception as error: 
  34.             # 捕獲異常,也可以用log寫到日志里方便查看和管理 
  35.             print(error) 
  36.             continue 
  37.  
  38. wb.save(r'C:\Users\20200420.xlsx'

 

責(zé)任編輯:華軒 來源: 早起Python
相關(guān)推薦

2020-11-05 12:56:19

Python辦公自動化

2022-06-13 09:12:04

PythonPDF代碼

2022-03-21 10:09:08

PythonExcel郵件

2021-07-09 07:24:47

Python自動化辦公

2021-12-28 09:24:49

Python郵件Word

2022-08-04 13:27:35

Pythonopenpyxl

2021-04-17 23:10:59

Python微軟Word

2021-04-22 15:46:42

物聯(lián)網(wǎng)智能辦公IoT

2023-05-15 08:01:32

Python辦公自動化

2009-02-11 09:49:00

網(wǎng)絡(luò)維護(hù)網(wǎng)絡(luò)管理

2024-05-29 11:16:33

PythonExcel

2011-08-03 17:37:05

2022-06-05 21:09:47

Python辦公自動化

2009-10-26 21:26:37

網(wǎng)絡(luò)運(yùn)維辦公自動化

2025-04-23 08:15:00

2013-01-10 15:21:09

三元食品辦公自動化IBM

2013-12-09 18:12:02

華為PTN電力配網(wǎng)

2021-04-23 22:44:57

Python開發(fā)辦公自動化

2023-10-18 13:57:17

2021-12-14 07:40:08

Excel自動化辦公
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产成人综合av | 在线观看视频亚洲 | 高清欧美性猛交 | 亚洲欧洲在线观看视频 | 福利二区 | av日日操| 精品视频一区二区 | 波多野结衣精品 | 秋霞国产 | 农村真人裸体丰满少妇毛片 | 国产精品一级 | 91一区二区三区在线观看 | 九九视频在线观看视频6 | 国产福利免费视频 | 免费观看一级毛片 | 涩爱av一区二区三区 | 久久综合888 | 美美女高清毛片视频免费观看 | 午夜精品久久久久久久久久久久久 | 国产精品久久久久久一区二区三区 | 青青草原精品99久久精品66 | 91天堂网 | 欧美激情综合五月色丁香小说 | 在线观看免费av片 | 国产精品久久久久久久久久久久午夜片 | 国产精品一区三区 | 99精品久久久久久中文字幕 | 亚洲视频一区二区三区 | 99久久夜色精品国产亚洲96 | 中文字幕在线观看 | 久久爱综合 | 手机在线不卡av | 丝袜一区二区三区 | 国产高清免费 | 欧美色性| 成人妇女免费播放久久久 | 成人免费一区二区三区牛牛 | 成人精品鲁一区一区二区 | www日本在线| 在线国产一区二区 | 亚洲国产精品成人无久久精品 |