有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改)

一共有近2600条类似格式的表格细栏,每个栏目包括的信息有:

  • 日期
  • 发文单位
  • 文号
  • 标题
  • 签收栏
    需要提取其中加粗的这三项内容到Excel表格中存储,表格样式如下:

    也就是需要将收文时间、文件标题、文号填到指定位置,同时需要将时间修改为标准格式,如果是完全手动复制和修改时间,依照一个条目10s的时间计算,一分钟可以完成6条,那么最快也需要:

    而这类格式规整的文件整理非常适合用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()# 文号dfn = tables[j].cell(i, 3).text.strip()print(n, date, tite, dfn)

接下来需要解决的是,时间我们获取的是 2/1 这种 日/月的形式。我们需要转化成 YYYY-MM-DD格式,而这利用到datetime包的strptime和strftime函数:

  • strptime: 解析字符串中蕴含的时间
  • strftime: 转化成所需的时间格式
import datetimen = 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 = '-'# 标题title = table0.cell(i + 1, 1).text.strip()# 文号dfn = tables[j].cell(i, 3).text.strip()print(n, date, tite, dfn)

这样一张表的内容解析就完成了,注意这里用的是table[0]即第一张表,遍历所有的表加一个嵌套循环就可以,另外也可以捕获异常增加程序灵活性

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).textif '/' in date:date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d')else:date = '-'# 标题title = tables[j].cell(i + 1, 1).text.strip()# 文号dfn = tables[j].cell(i, 3).text.strip()n += 1print(n, date, title, dfn)except Exception as error:# 捕获异常,也可以用log写到日志里方便查看和管理print(error)continue

信息解析和获取完成就可以导出了,用到的包是openpyxl

from openpyxl import Workbook# 实例化
wb = Workbook()
# 获取当前sheet
sheet = wb.active
# 设立表头
header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注']
sheet.append(header)

在最内层解析循环的末尾加上如下代码即可

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

线程的最后记得保存

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

运行时间在10分钟左右,大概离开了一会程序就执行结束了

最后附上完整代码,代码很简单,理清思路最重要

from docx import Document
import datetime
from openpyxl import Workbookwb = Workbook()
sheet = wb.active
header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注']
sheet.append(header)path = r'C:\Users\word.docx'
document = Document(path)
tables = document.tablesn = 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).textif '/' in date:date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d')else:date = '-'# 标题title = tables[j].cell(i + 1, 1).text.strip()# 文号dfn = tables[j].cell(i, 3).text.strip()n += 1print(n, date, title, dfn)row = [n, date, ' ', title, dfn, ' ']sheet.append(row)except Exception as error:# 捕获异常,也可以用log写到日志里方便查看和管理print(error)continuewb.save(r'C:\Users\20200420.xlsx')

参考链接 :
Python办公自动化(一):从Word到Excel :https://mp.weixin.qq.com/s/IMXqGfPVKNRk_pvdtD35fA

Python办公自动化(一):从Word到Excel相关推荐

  1. Python办公自动化|从Word到Excel

         作者:陈熹      来源:早起Python 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似 ...

  2. python word转excel_看Python如何无缝转换Word和Excel

    word和excel是办公过程必不可少的两个文档类型,word多用于文字处理,比如备忘录.论文.书籍.报告.商业信函等,excel可以制作精美的图表,还可以计算.分析.记录数据.二者在功能达成上有重叠 ...

  3. Python办公自动化教程-1.1节-Excel基础概念

    1.1.1 Excel简介 Excel是一种电子表格软件,其提供的直观界面.出色的计算功能和图表工具,广受办公人士欢迎,是最流行的个人计算机数据处理软件. 1.1.2 Excel的表格结构与定位 Ex ...

  4. python自动化办公 51cto_Python办公自动化之从Word到Excel

    大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似格式的表格细栏,每个栏目包括的信息有: 日期 发文单位 ...

  5. 导出excel加粗_Python办公自动化|从Word到Excel

    文章来源:早起Python 作者:陈熹 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似格式的表格细栏, ...

  6. python词频统计(word ——> excel,含去重)

    word资料处理 -------> 存入excel 精简地从word文档读取资料,分析后传入excel文档. 不是txt!因为我的电脑是mac,针对txt的乱码问题解决不了. 主要操作的思维导图 ...

  7. python办公自动化模块_Python自动化办公Excel模块openpyxl原理及用法解析

    openpyxl 介绍 openpyxl 是一个直接可用于读写 xlsx .xlsm.xltx.xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动 ...

  8. Python办公自动化学习笔记--Word操作

    1.纯文字 只修改word中的某些信息,而其他信息是通用的!并且要生成很多个这样的文档. #导入需要用到的库 from cProfile import run from docx import Doc ...

  9. python:办公自动化之:WORD实战之批量自动填写毕业论文指导记录(逐步完善)

    from docx import Document from docx.shared import * from docx.enum.text import * import os import op ...

  10. 文末福利|使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!

    往期精选 Python办公自动化|从Word到Excel Python办公自动化|从Excel到Word Python办公自动化|对比文件,光速完成 Python办公自动化|Excel表格,自动更新 ...

最新文章

  1. 自适应分辨率可扩展二层JS下拉菜单
  2. json 数据 生成 图表_CAPP工艺图表 / 知识重用 快速编制
  3. 网络学习(七)Windows XP系统之纯净版安装
  4. stm32 输入捕获学习(一)
  5. 网络分流器|运营商光纤延距解决方案
  6. 33. 搜索旋转排序数组(013)二分查找+思路详解+来干了这杯代码!!!!!!
  7. ios 图片逆时针旋转_iphone-IOS 竖直拍照被旋转,image-orientation 让图片自动旋转
  8. NoteBurner Spotify教程:在Mac上将 Spotify 音乐转换为 MP3 格式
  9. 默认smtp虚拟服务器,轻松架设自己的SMTP服务器
  10. github访问不进去,浏览器证书不安全,访问失败,证书失效,证书颁发者为VMware,谷歌浏览器小bug
  11. html图片上的灯光,CSS3 实现灯光照射显示文字动画
  12. 爬虫抓取BestCoder的比赛排名
  13. 使用 advanced installer 为 winform 做自动更新
  14. LeetCode-912-排序数组
  15. python和java学哪个好-Python和Java二选一该学啥?
  16. Accessing Data in Pivotal GemFire with REST
  17. Windows任务管理器,远比你想象中的复杂
  18. 【Window10】解决win10家庭中文版找不到组策略gpedit.msc修改不了C盘文件
  19. 6大提示教你搞定LED恒流电源电路设计!
  20. 【愚公系列】2023年01月 Java教学课程 016-break和continue

热门文章

  1. 深度学习工程师能力评估标准
  2. python用jieba模块分词实现关键词提取
  3. csol战损左轮python_CSOL2017年9月12日更新维护到几点
  4. 每天执行一次批处理_关于静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析...
  5. java实现英文文件单词搜索系统_java对于目录下文件的单词查找操作代码实现
  6. 对棋盘完美覆盖问题证明过程的质疑及其解决
  7. android IM的实现:聊天室(采用smack API)
  8. [转载]无线通信系统中的调制解调基础(一):AM和FM
  9. c语言lnk1104无法打开exe,error LNK1104: 无法打开文件“C:\Users\Administrator\Desktop\....\\xxxx.exe”...
  10. 两年半php,两年半,我收获了什么?