【办公自动化实例】根据关键词从word文档中提取相关信息并存到excel表格中

文章目录

        • 一、需求
        • 二、分析及思路
        • 三、整体代码
        • 四、截图:

一、需求

根据关键词,从Word文档里的表格中提取所需要的数据汇总到Excel中,并汇总到Excel中做台帐。

二、分析及思路

常规表格中,我们一般会通过横向填写或者竖向填写的方式来进行内容的填写,有些单元格还会有合并的情况,如下图所示,通过 python 的 docx 模块,可以完成 word 文档的信息提取:
【办公自动化实例】根据关键词从word文档中提取相关信息并存到excel表格中_第1张图片

2.1 遍历文件夹中,需要提取的 docx 文件(这里最好是把将要提取的文件放在一个文件夹中)
2.2 通过 docx 模块里面的 table 方法,通过读取行/列的方式,遍历所有表格及表格中的内容;
2.3 通过给定的关键词,筛选出需要的数据;
2.4 将获取到的所有数据通过 pandas 存储的方式保存至 excel 中。

三、整体代码

from docx import Document
from openpyxl import load_workbook
import pandas as pd
import glob

'''
关键词存储在excel表格中,先提取(也可以直接手动写一个字典用于存储关键词)
'''
workbook = load_workbook(filename = '1.xlsx')
sheet = workbook.active
data_size = sheet.dimensions
dic={}
for cell in sheet[data_size][0]:
	dic[cell.value]=''

'''
遍历docx文件,读取表格相关内容
'''
doc_ls=[]
dic1={}
for path in glob.glob('*.docx'):
	doc = Document(path)
	for table in doc.tables:
		try:
		# 按行的方式读取
			for rows in table.rows:
				for i in range(0,len(rows.cells)):
					if rows.cells[i].text in list(dic.keys()):
						key = rows.cells[i].text
						value = rows.cells[i+1].text
						dic1[key] = [value]
			doc_ls.append(pd.DataFrame(dic1))

		except:
		# 按列的方式读取
			for cols in table.columns:
				for i in range(0,len(cols.cells)):
					if cols.cells[i].text in list(dic.keys()):
						key = cols.cells[i].text
						value = cols.cells[i+1].text
						dic1[key] = [value]
			doc_ls.append(pd.DataFrame(dic1))

'''
文件的合并存储
'''
df = pd.concat(doc_ls)
df.to_excel('提取后数据.xlsx')

代码相对简单,测试数据目前相对较少,可能有bug。

四、截图:

4.1 关键词的存储方式
【办公自动化实例】根据关键词从word文档中提取相关信息并存到excel表格中_第2张图片
4.2 提取后的数据
【办公自动化实例】根据关键词从word文档中提取相关信息并存到excel表格中_第3张图片

你可能感兴趣的:(办公自动化)