Python办公自动化|从Word到Excel

Python : 一文学会办公自动化(Word、Excel、PPT) 自动化: 1946年提出,被运用于军事等方面。 办公自动化指的是现在办公和计算机技术结合起来的新型的办公的方式。 “高效的工作”正是自动化解决的问题/ 办公自动化的分类: 操作Excel: 就业数据分析等 操作Word: 考试系统生成Word试卷等 操作PPT : 用户画像分析等 使用的模块: xlrd模块 xlwt模块 smtplib模块 pywin32模块 python-ppt模块 python-docx模块 pymysql模块 xlsxwriter模块 1. xlrd模块 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料、代码以及交流解答点击即可加入


大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份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 datetime

n = 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).text
            if '/' 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 += 1
            print(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 Workbook

wb = Workbook()
sheet = wb.active
header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注']
sheet.append(header)


path = r'C:\Users\word.docx'
document = Document(path)
tables = document.tables

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).text
            if '/' 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 += 1
            print(n, date, title, dfn)
            row = [n, date, ' ', title, dfn, ' ']
            sheet.append(row)
        except Exception as error:
            # 捕获异常,也可以用log写到日志里方便查看和管理
            print(error)
            continue

wb.save(r'C:\Users\20200420.xlsx')
python办公自动化之python-docx,openpyxl——根据excel(word表格)填写word表格(excel) 系列文章 第一章 python办公自动化之批量修改docx——以修改含有表格的word文件为例 第二章 python办公自动化之批量生成docx——根据excel (word)生成word (excel) 第三章 python办公自动化之python-docx,openpyxl——根据excel(word表格)填写word表格(excel) 阅读详情

相关推荐

python办公自动化之批量生成docx——根据excel生成word、根据word生成excel

python办公自动化之批量生成docx——根据excel生成word、根据word生成excel 一、从excel读取 二、写入docx 三、批量生成docx 四、反向操作,根据word生成excel

摸鱼的店掌柜 1736

用python提取word到excel(excel可更新)

用python提取word到excel(excel可更新)

qq_44789021的博客 4501

Python办公自动化(一):从Word到Excel_python word range

接下来需要解决的是,时间我们获取的是 2/1 这种 日/月的形式。仔细观察可以发现一个文件条目占据了3行,所以对表格全部行循环迭代时可以设步长为3。这样一张表的内容解析就完成了,注意这里用的是table[0]即第一张表,再把问题逐个划分,首先尝试获取第一张表第一个文件条目的三个所需信息。信息解析和获取完成就可以导出了,用到的包是openpyxl。运行时间在10分钟左右,大概离开了一会程序就执行结束了。注意观察表格,按照row和cell把所需内容解析清楚。,代码很简单,理清思路最重要。

2501_90253891的博客 280

用Python读取Word文档并写入Excel(一)

工作中经常要处理大量的word文档,大部分内容都很简单,比如说做一个汇总表,从发来的word文档里提取名字、联系方式、地址等信息,提取完之后还需要用Excel做汇总,对于十几份的文档尚好,但对于成百份,甚至上千份的word文档,即便只是基本的复制粘贴,这个工作量也实在是太大。 于是,想想能不能自己写一个脚本,能自动的提取word文档里的主要信息,并自动写入Excel文档。首选语言便是Python,查

杨幽科技 3万+

全网最全!!全都有~ Python办公自动化之Word、Excel、PPT 系列教程

课程大纲 第二章 Python10分钟入门 【2.1】:PyCharm社区版配置Anaconda开发环境 【2.2】:Python基础知识及正则表达式入门 第三章 Python操作Excel 【3.1】:xlrd 使用教程 读取 操作Excel 【3.2】:xlwt 使用教程 写入 操作Excel 【3.3】:xlutils 使用教程 修改 操作Excel 【3.4】:xlwings 使用教程 读取 写入 修改 操【作Excel 【3.5】:openpyxl 使用教程 读取 写入 修改 操作Excel 【3

超级大洋葱的博客 4316

用Python将Word中的内容写入Excel

用Python将Word中的内容写入Excel

Python把数据从Word(.docx)中读出来写入到Excel(.xlsx)中

左侧Word的每一行是一段,是一些非结构化数据,目标是把它结构化表示成右侧的excel格式。需要导入的包:import docx from docx import Document from openpyxl import Workbook from tools import *新建用于写xlsx的对象workbook = Workbook() booksheet = workbook.activ...

u012135425的博客 2万+

黑群晖二合一已损毁_手动修复黑群晖已损毁磁盘空间

lz的用法是这样的,一个中古级mac mini 2011上装有vmware esxi 7.6, 然后上面挂载了lz的华芸Asustor Nas的iscsi空间,lz用的是basic volume,然后esxi上面有虚拟的黑群晖6.2.2-24922,黑群晖的docker里跑着不可描述软件,但是发现下载速度过快时,比如有好几个文件同时下载,总速度超过60MB/s以后storage manager里很...

weixin_39669629的博客 1万+

Python办公自动化 -- Excel和Word的操作运用

Python办公⾃动化是利⽤Python编程语⾔来创建脚本和程序,以简化、加速和⾃动化⽇常办公任务和⼯作流程的过程。它基于Python的强⼤功能和丰富的第三⽅库,使得能够处理各种办公任务,如⽂档处理、数据分析、电⼦邮件管理、⽹络通信等等。⾃动化任务:使⽤Python编写代码来代替⼿动执⾏重复的任务,从⽽提⾼效率和减少错误。

分享型博主 2064

CTS实战:如何用set_sense优化时钟树平衡(附ICC2避坑指南)

本文深入探讨了在时钟树综合(CTS)中,如何正确使用`set_sense`命令优化时钟树平衡,并对比了其与`set_disable_timing`的本质区别。通过实战案例详细解析了`-stop_propagation`和`-clock_leaf`参数的应用场景,并提供了ICC2工具中的关键避坑指南,帮助后端工程师精准控制时钟拓扑,避免时序分析漏洞。

weixin_28933797的博客 457

SecureCRT串口连接保姆级教程:从驱动安装到波特率设置(附常见问题解决)

本文提供SecureCRT串口连接的保姆级教程,涵盖从USB转串口驱动安装、端口识别到波特率等核心参数设置的完整流程。针对连接失败、乱码、键盘输入无响应等高频问题,给出了深度排查与解决方案,帮助网络与嵌入式开发新手快速掌握串口调试技能。

weixin_29281941的博客 433

Python办公自动化之Excel转Word

在日常工作中,Python在办公自动化领域应用非常广泛,如批量将多个Excel中的数据进行计算并生成图表,批量将多个Excel按固定格式转换成Word,或者定时生成文件并发送邮件等场景。本文主要以一个简单的小例子,简述Python在Excel和Word方面进行相互转换的相关知识点,谨供学习分享使用,如有不足之处,还请指正。 相关知识点 本文主要是将Excel文件通过一定规则转换成Word文档,涉及知识点如下所示: xlrd模块:主要用于Excel文件的读取,相关内容如下: xlrd.open_wor

绳锯木断,水滴石穿,专心写文,无问西东!!! 1625

用友U8登录慢卡顿?别急着重启服务器,先检查UA_Message这张表(附SQL清理脚本)

本文针对用友U8登录慢卡顿问题,深入分析UA_Message表积压消息对系统性能的影响,并提供SQL清理脚本和优化方案。通过诊断、清理、索引优化和预防措施四步法,显著提升U8客户端登录速度,适用于后台管理和数据库维护场景。

weixin_28726671的博客 380

python在办公领域应用,Python办公自动化之Excel转Word

在日常工作中,Python在办公自动化领域应用非常广泛,如批量将多个Excel中的数据进行计算并生成图表,批量将多个Excel按固定格式转换成Word,或者定时生成文件并发送邮件等场景。本文主要以一个简单的小例子,简述Python在Excel和Word方面进行相互转换的相关知识点,谨供学习分享使用,如有不足之处,还请指正。相关知识点本文主要是将Excel文件通过一定规则转换成Word文档,涉及知识...

weixin_33837846的博客 406

基于FDTD的涡旋光束发射器设计

为实现涡旋光束在小型设备中的应用,提出一种圆柱孔光栅蚀刻硅微环谐振腔结构,器件半径仅为4.1μm。建立一个理论模型,利用偶极子点表示沿微环腔内壁的光栅元件散射辐射,推导输出光场表达式,建模结果验证该结构可在不同波长下选择性地产生各种拓扑数的涡旋光束。此外,对器件进行性能分析与参数优化,结果表明,微环波导宽度过小会大大增加微环的辐射损耗。当微环波导宽度为450nm、耦合间距为100nm时,1 579nm波长附近的谐振峰输出功率为16.3dB,Q值为15 800。

qq_61890005的博客 827

杰理JL701N V142的SDK实现双备份自定义OTA教程和代码分享

摘要 本文档详细介绍了基于JL701N SDK的UART OTA升级功能开发方案。该方案采用双备份(Dual Bank)机制,通过串口实现安全可靠的固件远程更新。核心特性包括:1) 双备份升级机制确保升级失败可回滚;2) CRC-16/XMODEM校验保障数据完整性;3) 灵活的传输控制,支持自定义波特率和数据包大小。文档提供了完整的系统架构、API接口说明、通信协议规范以及移植指南,适用于生产烧录、现场升级等多种场景。配套Python升级工具简化了升级流程,使开发人员能够快速实现固件更新功能。

qq_42014563的博客 275

【Python办公自动化】——Excel、Word、PDF操作大全(2026版)

本文介绍了Python处理Excel、PDF和Word文档的自动化方法。通过openpyxl库可高效操作Excel:读取/修改单元格内容、插入行列、移动区域、使用公式等;PyPDF2和pdfplumber处理PDF文档;python-docx操作Word。这些工具能显著提升办公效率,减少重复劳动。文章详细展示了各库的核心功能与代码示例,帮助读者快速掌握自动化办公技能。适用于需要批量处理文档的职场人士和开发者,是提升生产力的实用指南。

weixin_42636075的博客 1793

Unity实战篇 | 教你怎样将Unity的启动Logo 设置成 自己制作的 帧动画

上一篇文章我们讲了怎样在不购买专业版的情况下自定义Unity的启动Logo。 那本篇文章就来介绍一下,怎样在去除默认Logo的前提下制作自己的启动动画!

努力前行,总会成为自己心中的那道光 6万+

python写入word表格_Python办公自动化| word 表格转excel

之前写过一篇 Python办公自动化 | 批量word报告生成工具 ,有小伙伴提出了逆向需求,即:从批量word中获取内容并写入excel,需求背景是汇总一些材料,举例:实习鉴定表、个人简历、档案等。实际需求是这样的,现在有如下格式的若干word文档,需要录入标黄信息到excel,手工录入效率太低了,能不能用python实现呢?答案是肯定的安装 docxpip install pothon-doc...

weixin_39824033的博客 285

基于YOLOv11的农作物病虫害检测系统设计与实现

我们使用公开的IP102病虫害数据集作为基础,该数据集包含102种病虫害类别,覆盖水稻、小麦、玉米等多种主要农作物。图像数量:75,222张类别数:102图像分辨率:从640×480到4000×3000不等标注格式:PASCAL VOC格式此外,我们还收集了部分田间实际拍摄的图像以增强模型泛化能力。

YOLO 595

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python办公自动化|光速对比并提取两份Word/Excel中的不同元素

文章来源:早起Python作者:陈熹大家好,又到了Python办公自动化专题如果你经常与Excel或Word打交道,那么从两份表格/文档中找到不一样的元素是一件让人很头疼的工作,当然网上...

简说Python的博客 1898

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python能做word和excel吗_Python办公自动化|从Excel到Word

更多自动化案例欢迎关注我的公众号:早起Python===Python办公自动化|从Word到Excel​mp.weixin.qq.com前言在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者提出的真实需求来讲解如何使用Python从Excel中计算、整理数据并写入Word中,其实并不难,主要就是以下两步:openpyxl读取Excel获...

weixin_39553156的博客 121

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

asp网页生成excel 多sheet_Python办公自动化|从Excel到Word

更多自动化案例欢迎关注我的公众号:早起Python===Python办公自动化|从Word到Excel​mp.weixin.qq.com前言在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者提出的真实需求来讲解如何使用Python从Excel中计算、整理数据并写入Word中,其实并不难,主要就是以下两步:openpyxl读取Excel获...

weixin_39906245的博客 126

Python 办公自动化入门:玩转 Excel 与 Word

Python 办公自动化的核心在于“把重复动作写成脚本”。多参考现有示例(如你项目中两个生成器),逐渐积累自己的函数库,日常出报表、贺卡、通知即可一键完成。

而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也! 762
上一篇: Python办公自动化|从Excel到Word
下一篇: 10行Python代码自动清理电脑内重复文件,解放双手!
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值