word和excel是办公过程必不可少的两个文档类型,word多用于文字处理,比如备忘录、论文、书籍、报告、商业信函等,excel可以制作精美的图表,还可以计算、分析、记录数据。二者在功能达成上有重叠,工作过程中经常需要转换,如果内容少,还可以手动解决,但是一旦数据量庞大,靠手动,耗时费力不说,还很容易出现差错,今天以两个实例,教大家如何用Python实现word和excel之间的转换。
从Word到Excel
比如有这样一份Word文档
一共有近2600条类似格式的表格细栏,每个栏目包括的信息有:
- 日期
- 发文单位
- 文号
- 标题
- 签收栏
需要提取其中加粗的这三项内容到Excel表格中存储,表格样式如下:
也就是需要将**收文时间、文件标题、文号填到指定位置,**同时需要将时间修改为标准格式,如果是完全手动复制和修改时间,依照一个条目10s的时间计算,一分钟可以完成6条,那么最快也需要:
2600/6=433.3(min)
而这类格式规整的文件整理非常适合用Python来执行,好的那么接下来请Python出场,必要的信息我在代码中以注释信息呈现。
首先使用Python将Word文件导入
导入需要的库docx
from docx import Document
指定文件存放的路径
path = r’C:\Users\word.docx’
读取文件
document = Document(path)
读取word中的所有表格
tables = document.tables
再把问题逐个划分
首先尝试获取第一张表第一个文件条目的三个所需信息
获取第一张表
table0 = tables[0]
仔细观察可以发现一个文件条目占据了3行,所以对表格全部行循环迭代时可以设步长为3
注意观察表格,按照row和cell把所需内容解析清楚
在全局放一个变量用来计数填序号
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()