当前位置: 首页 > news >正文

【办公自动化】使用Python一键往Word文档的表格中填写数据(文末送书)

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

一、Python处理Word

二、一键往Word文档的表格中填写数据

三、往期推荐


一、Python处理Word

  • Python处理Word的好处

使用Python处理Word文档具有许多优势,以下是一些主要的好处:

  1. 自动化和批量处理: Python可以帮助你自动化处理大量的Word文档,例如批量替换文本、生成报告、提取数据等。这样可以节省大量的时间和劳动力。

  2. 数据提取和转换: 如果你需要从大量的Word文档中提取特定数据,Python可以轻松实现这一点。你可以编写脚本来搜索并提取你需要的信息,然后将其转换为其他格式,如CSV、Excel或数据库。

  3. 定制化和自由度: 使用Python处理Word文档意味着你可以根据自己的需求定制处理过程。你可以创建定制的模板、样式和布局,以及根据项目需求进行灵活的调整。

  4. 与其他工具和技术的集成: Python可以与许多其他库和技术进行集成,例如数据库、Web服务、数据分析工具等。这使得你可以将Word文档的处理与其他工作流程结合起来,实现更复杂的任务。

  5. 文档生成和报告: 如果你需要定期生成报告或文档,Python可以通过自动生成文本、图表和表格等来实现。这对于数据分析、项目管理和业务报告等非常有用。

  6. 版本控制和代码重用: 使用Python代码处理Word文档可以实现代码重用和版本控制。你可以将处理文档的代码存储在版本控制系统中,以便团队成员协作、维护和共享代码。

  7. 跨平台性: 大多数Python库可以在多个操作系统上运行,因此你可以在Windows、Linux和macOS等不同平台上处理Word文档。

  • Python处理Word的第三方库

在Python中,有几个第三方库可以用于处理Word文档。以下是一些常用的第三方库:

  1. python-docx: 这是一个用于创建和修改Microsoft Word文档(.docx格式)的流行库。它允许你读取、编辑和创建Word文档,包括段落、表格、图像等。

  2. pywin32(仅限Windows): 这个库允许你在Windows上与Microsoft Office应用程序进行交互,包括Word。它可以用于自动化操作,例如创建、打开、编辑和保存文档。

  3. docx2txt: 这个库可以用来将.docx文件转换为纯文本(.txt格式)。它适用于从Word文档中提取文本内容。

  4. python-docx-template: 这个库扩展了python-docx库,使你能够在模板中插入变量和循环,并以更动态的方式生成Word文档。

  5. py-docx: 这是另一个用于处理.docx文件的库。它提供了类似python-docx的功能,但使用不同的接口。

二、一键往Word文档的表格中填写数据

技术工具:

Python版本:3.9

代码编辑器:jupyter notebook

        在工作中,我们经常遇到将Excel表中的部分信息填写到Word文档的对应表格中,以生成报告,方便打印。今天我们就来试试如何往固定的Word模板中填写数据。此例要求将Excel档的“收货数据”填写到Word档的“收货记录”中去,并加总收货数量。模板是下面这样的。

要求结果是这样的:

 首先,需要从Excel表格中提取数据。

#从Excel表中提取数据
from openpyxl import load_workbook
wb = load_workbook("收货数据.xlsx")
ws = wb.active
data=[]
for row in range(2,ws.max_row+1):seq = ws["A"+str(row)].valuesupplier = ws["B"+str(row)].valuematerial_pn = ws["C"+str(row)].valuematerial_model = ws["D"+str(row)].valuedesp = ws["E"+str(row)].valueqty = ws["F"+str(row)].valuedate = ws["G"+str(row)].value.date()info = [seq, supplier, material_pn, material_model, desp, qty, date]data.append(info)
# 检查一下数据
data[0]

由于需要将数量列的数据加总,所以先定义一个加总函数,以便后面调用。

#定义数量加总函数
def Sum_list(list):s = 0for i in list: #累加列表中的所有数s+=ireturn s
# 加总数量列的所有数字
qty_list=[]
for i in data:qty_list.append(i[5]) #数量在内层列表的第6个位置,索引是5
sum_qty= Sum_list(qty_list) #调用加总函数加总
sum_qty

定义单元格合并函数 

#定义合并单元格的函数    
def Merge_cells(table,target_list,start_row,col):'''table: 是需要操作的表格target_list: 是目标列表,即含有重复数据的列表start_row: 是开始行,即表格中开始比对数据的行(需要将标题除开)col: 是需要处理数据的列'''start = 0 #开始行计数end = 0 #结束行计数reference = target_list[0] #设定基准,以列表中的第一个字符串开始for i in range(len(target_list)): #遍历列表if target_list[i] != reference: #开始比对,如果内容不同执行如下reference = target_list[i] #基准变成列表中下一个字符串end = i - 1 table.cell(start+start_row,col).merge(table.cell(end+start_row,col))start = end + 1if i == len(target_list) - 1: #遍历到最后一行,按如下操作end = itable.cell(start+start_row,col).merge(table.cell(end+start_row,col))

然后往word的表格中写入数据,并合并单元格。

#数据提取即处理完毕后,就可以往Word的表格中写入数据了
from docx import Document
doc = Document("收货记录模板.docx")
#读取word文档中的第一个表格的第二和第三列除标题和尾部总数行的数据
table = doc.tables[0] #已确定是第一个表格,其索引是0
supplier = [] #存储供应商名称
pn = [] #存储物料编码
for i in data:supplier.append(i[1])pn.append(i[2])
#按需增加行,以便填写数据
for i in range(len(supplier)): #模板中已经有一行了,所以总共只需增加len(supplier)行table.add_row() 
#增加好行后先做合并单元格操作
Merge_cells(table,supplier,1,1) #开始合并行为2,索引为1;供应商名称是在2列,索引为1
Merge_cells(table,pn,1,2) #开始合并行为2,索引为1;物料编码是在3列,索引为2#写入数据到表格
for row in range(1,len(supplier)+1):for col in range(7):        table.cell(row,col).text = str(data[row-1][col])max_row = len(table.rows) #获取最大一行
qty_row = max_row-1 #确定需要写入加总数据的一行
table.cell(qty_row,5).merge(table.cell(qty_row,5)) #合并右下角用于填写数量的两个单元格
table.cell(qty_row,4).text = '总数:'
table.cell(qty_row,5).text = str(sum_qty)doc.save("收货记录.docx")

        由于合并供应商名称和物料编码两列中的相同内容的单元格,所有需要把这两列的信息从总数据`data`中单独提取出来。新建了`supplier`和`pn`两个空列表,然后遍历`data`,将数据取出并存入空列表。随后,我们根据实际需要,新增一些空白行,以便后面写入数据。新增行的数量以`supplier`列表中元素的个数为依据。这个表格已经存在一个空白行,算上外行要填“总数”,只需增加`supplier`列表中元素的个数对应那么多行就够了。当然这里也可以以列表`pn`中元素个数为依据,两者是相等的。增加好行后,先调用函数`Merge_cells`做合并单元格操作(如果先写入数据,再合并,会导致单元格内容重复)。合并完后,就可以写入数据到表格了,此处遍历需要写入数据的行和列,然后从`data`中提取数据。数据行写完后,还需要写入最后一行的“总数”字样和总的物料数量。最后保存数据,得到如下结果:

三、往期推荐

Python提取pdf中的表格数据(附实战案例)

使用Python自动发送邮件

Python操作ppt和pdf基础

Python操作word基础

Python操作excel基础

使用Python一键提取PDF中的表格到Excel

四、文末推荐与福利

《Python自动化办公应用大全(ChatGPT版)》免费包邮送出3本!

内容简介:

        本书全面系统地介绍了Python语言在常见办公场景中的自动化解决方案。全书分为5篇21章,内容包括Python语言基础知识,Python读写数据常见方法,用Python自动操作Excel,用Python自动操作Word 与 PPT,用Python自动操作文件和文件夹、邮件、PDF 文件、图片、视频,用Python进行数据可视化分析及进行网页交互,借助ChatGPT轻松进阶Python办公自动化。 
        本书适合各层次的信息工作者,既可作为初学Python的入门指南,又可作为中、高级自动化办公用户的参考手册。书中大量的实例还适合读者直接在工作中借鉴。

编辑推荐:

        借助ChatGPT与Python轻松实现办公自动化:Excel Home多位微软全球MVP专家打造,用大量实例介绍使用Python操作Excel、Word、PPT和日常办公中涉及的各种对象。让没有编程经验的普通办公人员也能驾驭Python,实现多个场景的办公自动化,提升工作效率!

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-09-28 20:00:00
  • 当当网购买链接:http://product.dangdang.com/29566495.html

  • 京东网购买链接:https://item.jd.com/13953308.html

 名单公布时间:2023-09-28 21:00:00   

相关文章:

【办公自动化】使用Python一键往Word文档的表格中填写数据(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

OpenHarmony应用核心技术理念与需求机遇简析

一、核心技术理念 图片来源:OpenHarmony官方网站 二、需求机遇简析 新的万物互联智能世界代表着新规则、新赛道、新切入点、新财富机会;各WEB网站、客户端( 苹果APP、安卓APK)、微信小程序等上的组织、企业、商户等;OpenHarmony既是一次机遇、同时又是一次大的挑战&…...

让Pegasus天马座开发板实现超声波测距

在完成《让Pegasus天马座开发板用上OLED屏》后,我觉得可以把超声波测距功能也在Pegasus天马座开发板上实现。于是在箱子里找到了,Grove - Ultrasonic Ranger 这一超声波测传感器。 官方地址: https://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger 超声…...

C++11 多线程学习

C11学习 一、多线程 1、模板线程是以右值传递的 template <class Fn, class... Args> explicit thread(Fn&& fn, Args&&... args)则需要使用到std::ref和std::cref很好地解决了这个问题&#xff0c;std::ref 可以包装按引用传递的值。 std::cref 可以…...

数学公式测试

MVP变换 MVP变换用来描述视图变换的任务&#xff0c;即将虚拟世界中的三维物体映射&#xff08;变换&#xff09;到二维坐标中。 MVP变换分为三步&#xff1a; 模型变换(model tranformation)&#xff1a;将模型空间转换到世界空间&#xff08;找个好的地方&#xff0c;把所…...

机器学习——SVM(支持向量机)

0、前言&#xff1a; SVM应用&#xff1a;主要针对小样本数据进行学习、分类和回归&#xff08;预测&#xff09;&#xff0c;能解决神经网络不能解决的过学习问题&#xff0c;有很好的泛化能力。&#xff08;注意&#xff1a;SVM算法的数学原理涉及知识点比较多&#xff0c;所…...

【李沐深度学习笔记】基础优化方法

课程地址和说明 基础优化方法p2 本系列文章是我学习李沐老师深度学习系列课程的学习笔记&#xff0c;可能会对李沐老师上课没讲到的进行补充。 基础优化方法 在讲具体的线性回归实现之前&#xff0c;要先讲一下基础的优化模型的方法 梯度下降 当模型没有显示解&#xff08…...

tmux 配置vim风格按键,支持gbk编码

vim修改~/.tmux.conf文件&#xff0c;没有则新增&#xff0c;添加如下内容。默认前缀更改为Ctrla。强烈建议更换Caps lock键位与Ctrl键位&#xff0c;用过的都说好&#xff0c;换过就回不来了。 unbind C-b set -g prefix C-a bind a send-prefixset -sg escape-time 1bind r …...

Python —— excel文件操作(超详细)

背景 很多公司还是用excel去管理测试用例的&#xff0c;所以为了减少重复繁琐的导出导出工作&#xff0c;学会如何用代码操作excel表格很实用~ 1、读取excel文件基本步骤 1、操作excel的一些库 1、xlrd&#xff1a;读取库&#xff0c;xlwt&#xff1a;写入&#xff0c;现在…...

什么是AI问答机器人?它的应用场景有哪些?

近年来&#xff0c;由于技术的进步和对个性化客户体验的需求不断增长&#xff0c;AI问答机器人也是获得了巨大的关注。AI问答机器人&#xff0c;也被称为AI聊天机器人&#xff0c;是一种旨在模拟人类对话并通过基于文本或语音的界面与用户交互的计算机程序。其能够自动执行各种…...

静态文件

静态文件 静态文件配置 - settings.py中 1&#xff0c;配置静态文件的访问路径【该配置默认存在】 通过哪个url地址找静态文件 STATIC URL‘/static/’ 说明 指定访问静态文件时是需要通过/static/xxx或http://127.0.0.1:8000/static/xxx [xxx表示具体的静态资源位置] 模…...

Centos7 自部署中间件开机启动,以及java应用开机启动方法

一、zookeeper cd /etc/rc.d/init.d/ touch zookeeper chmod x zookeeper vi zookeeper#以下为内容&#xff0c;自行修改 路径#!/bin/bash ##chkconfig:2345 10 90#description:service zookeeper #修改为自己的目录 export ZOO_LOG_DIR/data/apache-zookeeper-3.7.0/logs…...

密度估计公式

极大似然估计&#xff1a; y p ( x 1 , x 2 , x 3 , . . . , x n ) 1 2 π σ e − ( x 1 − μ ) 2 2 σ 2 1 2 π σ e − ( x 2 − μ ) 2 2 σ 2 . . . 1 2 π σ e − ( x n − μ ) 2 2 σ 2 y p(x_1,x_2,x_3,...,x_n) \frac{1}{\sqrt{2\pi} \sigma} e ^{-\frac{(x_1…...

2023 ICPC 网络赛 第一场(补题:F)

7题罚时879&#xff0c; 队排235&#xff0c;校排79。 除了I题dp没注意空间限制第一发没有用滚动数组MLE&#xff0c;以及G题启发式合并脑抽用set当容器T一发&#xff0c;以及K没注意是平方的期望白wa4发这些应当避免的失误外&#xff0c;基本满意。剩下的题基本都是当时写不出…...

MySQL慢查询优化、日志收集定位排查、慢查询sql分析

MySQL慢查询日志收集、定位&#xff0c;慢查询分析、排查。 一 MySQL慢查询定位 1. 确定是否已开启慢查询日志 查看慢查询日志是否已经被开启&#xff1a; SHOW VARIABLES LIKE slow_query_log; 如果返回值是OFF&#xff0c;你需要开启它。 2. 开启慢查询日志 你可以临时在运…...

HZOJ-266:表达式计算

题目描述 ​ 给出一个表达式,其中运算符仅包含 ,-,*,/,^ 要求求出表达式的最终值。 ​ 数据可能会出现括号情况&#xff0c;还有可能出现多余括号情况&#xff0c;忽略多余括号&#xff0c;正常计算即可&#xff1b; ​ 数据保证不会出现大于 max long int 的数据&#xff1…...

JavaScript学习小结

变量声明&#xff1a;使用var关键字&#xff0c;变量没有类型&#xff0c;但值有类型&#xff08;弱类型语言&#xff09; 数据类型&#xff1a; ①number ②string&#xff08;单引号&#xff0c;双引号都可以表示字符串&#xff09; ③boolean ④Object类型 ⑤undefine…...

MySQL学习笔记13

DISTINCT数据去重&#xff1a; 案例&#xff1a;获取tb_student学生表学员年龄的分布情况。 mysql> select * from tb_student; ------------------------------------------------- | id | name | age | gender | address | --------------------------…...

怎么获取外网ip地址

在网络连接中&#xff0c;每个设备都被分配一个唯一的IP地址&#xff0c;用于标识和定位该设备。其中&#xff0c;内部或局域网IP地址是在局域网内使用的&#xff0c;而外网IP地址则是与公共互联网通信时所使用的地址。 获取外网IP地址对于许多人来说可能是一个常见的需求&…...

算法 只出现一次的两个数字-(哈希+异或)

牛客网: BM52 题目: 数组中仅2个数字出现1次&#xff0c;其余出现2次 思路: 出现2次的数字异或结果为0&#xff0c;另外两个不同的数字异或结果res不为0&#xff0c;异或结果的二进制位必与其中一个相同&#xff0c;求出二进制位为1的pos, 遍历数组&#xff0c;所有此位置为1…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...