python统计word表格写入excel

环境:python 3.5

所用库:os,docx,xlwt

pip install一下啦!

收到一份特别恶心的任务,大概是这样的:领导给了一个文件夹,包含了公司不同部门,子公司的项目,文件夹内嵌套了项目图片,设计图纸,乱七八糟,要求我去统计所有项目的基础内容,然后第一反应崩溃的。不干了,辞职,做什么行政。转念一想这个月房租还没交,然后默默的打开了文件。。。。。

文件内容大概如下,好在word内多个表格格式是一样的。

废话不多说了,上代码吧

1.首先遍历文件夹,提取docx文件,把位置写进list

osflie.py

import os

# 返回docx路径
def get_docx_path(dir_path):
	fwcd = os.getcwd()
	x = []
	# walk遍历文件
	for root, dirs, files in os.walk(dir_path, topdown=False):
		for name in files:
			fpath = os.path.join(root, name)		# 文件位置
			# 提取.docx
			if os.path.splitext(fpath)[1]==".docx":
				x.append(os.path.join(fwcd, fpath))

	return x

2.读取word,把表格数据写进dict,因为这时不确定是否会写进数据库,所以用了dict结构,将word的多分表格写进list返回,

fordocx.py  (这里我的表格为两列,表头在第一列,内容在第二列,相对简单)

import os
import docx 
from docx import Document

def get_docx_data(file_path):
	f = Document(file_path)
	x = []
	for table in f.tables:
		d = {}          # 这里把表格数据写成了dict,具体具体
		for row in table.rows:
			a = row.cells[0].text
			b = row.cells[1].text
			if a!='' or b!='':
				d[a] = b
		x.append(d)
	return x	

3.本来打算写入数据库在转excel的,不过感觉还是直接写入excel比较方便,这里有些虎头蛇尾了,代码比较乱,大家随便看看

wdxls.py

import osfile
import fordocx
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('sheet1',cell_overwrite_ok=True)

# 获取其全部文件地址
dir_path = "项目库"
file_list = osfile.get_docx_path(dir_path)
row,column,m  = 1, 0, 0
print('扫描文件总{}'.format(len(file_list)))
d = 0
# 遍历文件
for file in file_list:
	# 获取文件所有表格数据
	try:
		f_data = foedocx.get_docx_data(file)
	except Exception as e:
		continue
		raise e
	d += len(f_data)
	# 遍历数据
	for table_data in f_data:
		if len(table_data) == 13:
			for k in table_data.keys():
				worksheet.write(row, column, table_data[k])
				column += 1
				if column==13:
					column = 0
		else:
			print('{:-^25}'.format('文件模板不匹配,请手动添加'))
			print(file)
		row += 1 

# menu
for menu in table_data.keys():
	worksheet.write(0, m, menu)
	m += 1


workbook.save('demo1.xls') 
print("已完成扫描")

然后当当当就搞定了。。。。。。

主要函数以后再补上是使用参数,大家可参考pip官网文档,相对较全,解释也比较清楚。贡献给做行政不怎么会编程的小白。共勉

</hr>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值