Python办公自动化|从Excel到Word

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

前言

在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者提出的真实需求来讲解如何使用Python从Excel中计算、整理数据并写入Word中,其实并不难,主要就是以下两步:

  • openpyxl读取Excel获取内容

  • docx读写Word文件

那我们开始吧!

需求确认

首先来看下我们需要处理的Excel部分数据,因涉及隐私已经将数据皮卡丘化

可以看到数据非常多,并且还存在重复数据。而我们要做的就是对每一列的数据按照一定的规则进行计算、整理并使用Python自动填入到Word中,大致的要求如下

上面仅是部分要求,真实需要填入word中的数据要更多!

除了对按照格式进行处理并存入Word中指定位置之外,还有一个需求:最终输出的word文件名还需要按照一定规则生成:

OK,需求分析完毕,接下来看Python如何解决!

Python实现

首先我们使用Python对该Excel进行解析

from openpyxl import load_workbook
import os
# 获取桌面的路径
def GetDesktopPath():
    return os.path.join(os.path.expanduser("~"), 'Desktop')

path = GetDesktopPath() + '/资料/' # 形成文件夹的路径便后续重复使用
workbook = load_workbook(filename=path + '数据.xlsx')
sheet = workbook.active # 获取当前页
# 可以用代码获取数据范围,如果要批处理循环迭代也方便
# 获取有数据范围
print(sheet.dimensions)
# A1:W10

利用openpyxl读取单元格有以下几种用法

cells = sheet['A1:A4']  # 返回A1-A4的4个单元格
cells = sheet['A'] # 获取A列
cells = sheet['A:C'] # 获取A-C列
cells = sheet[5] # 获取第5行
# 注意如果是上述用cells获取返回的是嵌套元祖
for cell in cells:
    print(cell[0].value) # 遍历cells依然需要取出元祖中元素才可以获取值
# 获取一个范围的所有cell
# 也可以用iter_col返回列
for row in sheet.iter_rows(min_row=1, max_row=3,min_col=2, max_col=4):
    for cell in row:
        print(cell.value)

明白了原理我们就可以解析获取Excel中的数据了

# SQE
SQE = sheet['Q2'].value
# 供应商&制造商
supplier = sheet['G2'].value
# 采购单号
C2_10 = sheet['C2:C10'] # 返回cell.tuple对象
# 利用列表推导式后面同理
vC2_10 = [str(cell[0].value) for cell in C2_10]
# 用set简易去重后用,连接,填word表用
order_num = ','.join(set(vC2_10))
# 用set简易去重后用&连接,word文件名命名使用
order_num_title = '&'.join(set(vC2_10))
# 产品型号
T2_10 = sheet['T2:T10']
vT2_10 = [str(cell[0].value) for cell in T2_10]
ptype = ','.join(set(vT2_10))
# 产品描述
P2_10 = sheet['P2:P10']
vP2_10 = [str(cell[0].value) for cell in P2_10]
info = ','.join(set(vP2_10))
info_title = '&'.join(set(vP2_10))
# 日期
# 用datetime库获取今日时间以及相应格式化
import datetime
today = datetime.datetime.today()
time = today.strftime('%Y年%m月%d日')
# 验货数量
V2_10 = sheet['V2:V10']
vV2_10 = [int(cell[0].value) for cell in V2_10]
total_num = sum(vV2_10) # 计算总数量
# 验货箱数
W2_10 = sheet['W2:W10']
vW2_10 = [int(cell[0].value) for cell in W2_10]
box_num = sum(vW2_10)
# 生成最终需要的word文件名
title = f'{order_num_title}-{supplier}-{total_num}-{info_title}-{time}-验货报告'
print(title)

通过上面的代码,我们就成功的从Excel中提取出来数据,这样Excel部分就结束了,接下来进行word的填表啦,由于这里我们默认读取的word是.docx格式的,实际上读者的需求是.doc格式文件,所以windows用户可以用如下代码批量转化doc,前提是安装好win32com

# pip install pypiwin32
from win32com import client
docx_path = path + '模板.docx'
# doc转docx的函数
def doc2docx(doc_path,docx_path):
    word = client.Dispatch("Word.Application")
    doc = word.Documents.Open(doc_path)
    doc.SaveAs(docx_path, 16)
    doc.Close()
    word.Quit()
    print('\n doc文件已转换为docx \n')
if not os.path.exists(docx_path):
    doc2docx(docx_path[:-1], docx_path)

不过在Mac下暂时没有好的解决策略,如果有思路欢迎交流,好了有docx格式文件后我们继续操作Word部分


docx_path = path + '模板.docx'
from docx import Document
# 实例化
document = Document(docx_path)
# 读取word中的所有表格
tables = document.tables
# print(len(tables))
# 15

确定好每个表格数后即可进行相应的填报操作,table的用法和openpyxl中非常类似,注意索引和原生python一样都是从0开始

tables[0].cell(1, 1).text = SQE
tables[1].cell(1, 1).text = supplier
tables[1].cell(2, 1).text = supplier
tables[1].cell(3, 1).text = ptype
tables[1].cell(4, 1).text = info
tables[1].cell(5, 1).text = order_num
tables[1].cell(7, 1).text = time

上面代码完成Word中这一部分表格

我们继续用Python填写下一个表格

for i in range(2, 11):
    tables[6].cell(i, 0).text = str(sheet[f'T{i}'].value)
    tables[6].cell(i, 1).text = str(sheet[f'P{i}'].value)
    tables[6].cell(i, 2).text = str(sheet[f'C{i}'].value)
    tables[6].cell(i, 4).text = str(sheet[f'V{i}'].value)
    tables[6].cell(i, 5).text = str(sheet[f'V{i}'].value)
    tables[6].cell(i, 6).text = '0'
    tables[6].cell(i, 7).text = str(sheet[f'W{i}'].value)
    tables[6].cell(i, 8).text = '0'

tables[6].cell(12, 4).text = str(total_num)
tables[6].cell(12, 5).text = str(total_num)
tables[6].cell(12, 7).text = str(box_num)

这里需要注意两个细节:

  • word写入的数据需是字符串,所以从Excel获取的数据需要用str格式化

  • 表格可能存在合并等其他情况,因此你看到的行数和列数可能不是真实的,需要用代码不断测试。

按照上面的办法,将之前从Excel中取出来的数据一一填充到Word中对应位置就大功告成!最后保存一下即可。

document.save(path + f'{title}.docx')
print('\n文件已生成')

结束语

回顾上面的过程,其实从需求和文件格式上看,这次文件的读写解析任务较复杂,码代码和思考时间会较久,所以当我们在考虑使用Python进行办公自动化之前需要想清楚这个问题:这次需要完成的任务是否工作量很多,或者以后长期需要进行,用Python是否可以解放双手?如果不是,实际上手动就可以完成,那么就失去了自动化办公的意义!

后台回复【自动化】获取本文使用的数据与源码。


● 80%的人都不知道,全球Python库下载前10名

● 我珍藏的一些好的Python代码,技巧|上篇

● 爬取300本Python书籍,用Python告诉你哪家强?

● 简单几步,100行代码用Python画一个蝙蝠侠的logo

● 我用Python分析了《青春有你2》109位漂亮小姐姐,真香!

● 牛逼操作!用Python做了一个编程语言20年的动态排行榜!

● 我打赌,学会这6招,谁再敢笑你的Python程序慢!

每天分享一些有趣的干货

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根据EXCEL自动生成固定格式WORD报告

根据客户需求,为节省日常工作量,将平常需要从EXCEL选择、拷贝、粘贴数据到WORD文档中的工作,通过Python程序自动进行EXCEL数据采集、数据分析、数据计算、智能文字拼接工作。如果文档中有许多的文字格式不同,这个就需要不断设置每一段文件的格式,虽然比较繁琐,但是非常灵活实用,只需要在一个段落里面添加不同的文字句,然后设置文字句的格式即可。获取到excel里面的数据后,我们同样的方式打开相对路径下的word或者新建一个word文档,然后将对应的数据填充到word文档中。

baggiojing的专栏 3252

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

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

2501_90253891的博客 280

利用Python-docx和pandas将Excel表格内容输出到Word文档

利用Python-docx和pandas将Excel表格内容输出到Word文档

2301_78082460的博客 3775

全网最全!!全都有~ 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读取Excel中的数据,然后写进word

代码用于读Excel中的数据,然后批量写进word,文件的读写有专门的类,对于批量处理excel很有帮助

Python自动化办公:读取Excel数据并批量生成合同

在我们的工作中,面临着大量的重复性工作,通过人工方式处理往往耗时耗力易出错。而Python在自动化办公方面具有极大的优势,可以解决我们工作中遇到的很多重复性问题,分分钟搞定办公需求。一、背景在我们经济交往中,有时会涉及到销售合同的批量制作。比如我们需要根据如下合同数据(Excel),进行批量生成销售合同(Word)。二、准备我们首先要准备好一份合同模板(Word),将需要...

张俊红的个人博客 2594

使用Python根据excel中数据批量生成word文件,解决单选框问题

使用Python根据excel中数据批量生成word文件,解决单选框问题。给网友提问的答复。 见 https://blog.youkuaiyun.com/zw010101/article/details/106111382

Python办公自动化(二)|从Excel到Word_excel测试用例转换成wordpython

通过上面的代码,我们就成功的从Excel中提取出来数据,这样Excel部分就结束了,接下来进行word的填表啦,由于这里我们默认读取的word是.docx格式的,实际上读者的需求是.doc格式文件,所以windows用户可以用如下代码批量转化doc,前提是安装好win32com。title = f’{order_num_title}-{supplier}-{total_num}-{info_title}-{time}-验货报告’cells = sheet[‘A:C’] # 获取A-C列。

2401_84240189的博客 1268

Python将Excel中数据批量导出到Word模板中生成新的文件

windows下,使用python 将Excel中数据批量导出到Word模板中生成新的文件

从零构建AI Agent集群:Docker Compose与Nginx部署实战

在AI应用开发领域,微服务架构和容器化部署已成为提升开发效率和系统可维护性的关键技术。Docker Compose作为容器编排工具,能够将多个独立服务(如Node.js、Python应用)及其依赖(数据库、缓存)封装在隔离环境中,并通过统一配置文件定义服务间的网络与依赖关系,实现一键启停。Nginx作为反向代理,则提供了统一的网络入口、请求路由和负载均衡能力,是构建高可用Web应用的基石。这种组合技术方案的价值在于,它能将复杂的AI系统(如工作流引擎、对话Agent、技能库)的部署运维复杂度大幅降低,使得开

weixin_27028523的博客 638

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

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

分享型博主 2064

告别Keil/IAR:在VSCode中用CMake+Clangd打造丝滑的STM32开发环境(附完整配置)

本文详细介绍了如何在VSCode中使用CMake和Clangd搭建高效的STM32开发环境,替代传统的Keil/IAR工具。通过完整的配置指南和快速开发技巧,帮助开发者实现轻量级、高度可定制的现代化开发流程,显著提升STM32项目的开发效率。

weixin_26843605的博客 164

Python办公自动化之Excel转Word

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

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

Matlab TreeBagger实战:用随机森林预测房价的5个关键步骤(附完整代码)

本文详细介绍了使用Matlab的TreeBagger工具包构建随机森林模型预测房价的完整流程。通过波士顿房价数据集实战,涵盖数据预处理、模型构建、参数调优、特征重要性分析及高级应用(如分位数回归)等5个关键步骤,并附有完整代码,帮助读者快速掌握这一强大的回归分析工具。

ol789012的博客 444

26 硬件工程师笔面试高频考点真题解析——CAN总线

CAN总线是一种差分多主串行半双工总线,采用非破坏性位仲裁机制和五层硬件错误检测(位错误、填充错误、CRC校验、格式错误、应答错误),具有高可靠性和故障容错能力。关键设计包括两端120Ω终端电阻匹配阻抗、手拉手总线拓扑、显性/隐性电平优先级仲裁。常见故障分析指出多节点异常多因终端电阻错配/漏装、星型布线违规或总线过载;高速通讯失败常由阻抗失配或线缆过长导致信号反射。相比RS485,CAN支持多主架构、硬件自动仲裁和节点故障隔离,更适用于汽车、工业等高可靠场景。

XU157303764的博客 545

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

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

weixin_33837846的博客 406

基于深度学习YOLOv10的人脸表情识别系统(附完整资源+PySide6界面+训练代码)

本文介绍了如何基于YOLOv10实现一个人脸表情识别系统。我们从数据集准备、模型训练到PySide6界面实现进行了详细的讲解。通过该系统,用户可以实时检测和分类人脸表情,为情感分析、智能交互等应用场景提供支持。

YOLO 1053

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

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

weixin_42636075的博客 1793

S7-200SMART 的运动控制(一)向导配置具体步骤(图文)

S7-200SMART 的运动控制(一)向导配置具体步骤(图文)

Robot_PLC_HMI_Automation 3849

SAP 生产订单工序删除状态撤回简介

2、我们在前台对于生产订单的状态一个是在生产订单抬头中的状态,另外一个是针对上面一直在测试的是工序的状态,这个两个状态是前台可见的状态,实际生产订单还有一个组件物料的状态,这个状态是不可见的一个状态。生产订单中的0010工序中对应的组件的栏位被标识,表示有物料分配到了0010的工序中,正常情况下0010的工序被分配了工序是不应该被删除的。将已领料的工序删除掉,导致异常的发生。当物料已领料会,用户仍然把已分配的物料的工序删除掉,导致后续业务操作过程中产生异常,如下图中所示,0010的工序被打上了删除标识。

我小时候很黑的博客 1939

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

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

weixin_39824033的博客 285

5.13华为OD机试真题 新系统 - 社交网络相同爱好好友查询 (Java/Py/C/C++/Js/Go)

5.13华为OD机试真题 新系统 - 社交网络相同爱好好友查询 (Java/Py/C/C++/Js/Go)

算法大师! 154

Python办公自动化|从Word到Excel

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

简说Python的博客 2363

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

简说Python的博客 1898

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 用 Python 写出 Gameboy 模拟器,这位丹麦小哥的大学项目火了!
下一篇: 一网打尽Python中4大数据结构
菜鸟学Python
博客等级 码龄9年 8044粉丝 571原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值