Python实现读取Word表格计算汇总写入Excel

【数据处理】python读取word中表格;提取word文字;word表格转化为dataframe 【数据处理】读取word中表格;提取word文字;word表格转化为dataframe 阅读详情

快过年了,又到了公司年底评级的时候了。今年的评级和往常一下,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门收集起来根据收集上来的评价表进行汇总统计。想想要收集几十号人的评价表,并根据每个人的评价表又要填到Excel中进行汇总计算统计给出每个人的评价,就头大。虽然不是个什么难事,但是是个无脑的细致活。几十个人的评价也得要花大半天的时间来弄,而且搞多了还容易搞错。如是就想起干脆用Python写个小程序自动来处理这些脏活累活,评级年年都要评,每年都可以用。

要做的事情就是读放到某个文件夹中的word文档中的评价表格,根据表格内容进行处理,然后汇总所有的表格数据,根据计算规则,算出每个人的评分,在根据评分计算每个人的评价。汇总后写入Excel中。

不可否认用Python来实现这样的事情真的是太方便了,人生苦短我用Python。

我是用的python的docx包来处理word,用pandas来处理数据并写入excel

一、首先导入包

pip install docx
pip install pandas

pandas写excel依赖openpyxl包所以也到导入

pip install openpyxl

二、读评价表所在的目录文件

通过python的os包,列出文件夹里面的文件,识别出.docx的文件

files=os.listdir(filepah)
for file in files:
    if file.find('.docx')>0:
        docfilepah=filepah+file

三、读word文件,处理word中的表格数据

data=[]
#读word的docx评议表文件,并读取word中的表格数据
def procdoc(docfilepath):
    document=Document(docfilepath)
    tables=document.tables
    table=tables[0]
    for i in range(1,len(table.rows)):
        id=int(table.cell(i,0).text)
        name=table.cell(i,1).text
        excellent=0
        if table.cell(i,2).text!='' and table.cell(i,2).text is not None:
            excellent=1
        competent = 0
        if table.cell(i, 3).text!='' and table.cell(i, 3).text is not None:
            competent=1
        basicacompetent=0
        if table.cell(i, 4).text!='' and table.cell(i, 4).text is not None:
            basicacompetent=1
        notcompetent = 0
        if table.cell(i, 5).text!='' and table.cell(i, 5).text is not None:
            notcompetent=1
        dontunderstand =0
        if table.cell(i, 6).text!='' and table.cell(i, 6).text is not None:
            dontunderstand=1
        appraisedata=[id,name,excellent,competent,basicacompetent,notcompetent,dontunderstand]
        data.append(appraisedata)

四、统计计算

通过pandas直接对数据进行统计计算,避免了传统的循环计算。

df = pd.DataFrame(data,columns=['序号','姓名','优秀','称职','基本称职','不称职','不了解'])
df=df.groupby(['序号','姓名']).sum() #汇总每个人每一项的评分
df['票数'] = df.apply(lambda x: x.sum(), axis=1) #统计票数
df['计分'] = (df['优秀']*95+df['称职']*85+df['基本称职']*75+df['不称职']*65+df['不了解']*0)/len(df)#根据规则计分
df['评价']=df['计分'].map(getscore) #根据规则评价评级

计分方法:民主评议得分=Σ各等级票数*等级计分分数/总票数,其中“优秀”计95分,“称职”计85分,“基本称职”计75分,“不称职”计65分,“不了解”不计分。

#根据评分规则计算评级
def getscore(x):
    if x>=95:
        score='优秀'
    elif x>=80 and x<95:
        score='称职'
    elif x>=75 and x<80:
        score='基本称职'
    elif x<75:
        score='不称职'
    return score

五、将统计计算结果写入汇总Excel

通过pandas直接可以将dataframe写入到Excel文件

#将汇总计算好的数据写入Excel
def write2excle(exclefile,dataframe):
    writer = pd.ExcelWriter(exclefile)
    dataframe.to_excel(writer)
    writer.save()
    print('输出成功')

完整代码

Python不到八十行代码,实现读Word->处理表格数据->汇总计算数据->写Excel。

完整的代码如下:

import os
import pandas as pd
from docx import Document

data=[]
#读word的docx评议表文件,并读取word中的表格数据
def procdoc(docfilepath):
    document=Document(docfilepath)
    tables=document.tables
    table=tables[0]
    for i in range(1,len(table.rows)):
        id=int(table.cell(i,0).text)
        name=table.cell(i,1).text
        excellent=0
        if table.cell(i,2).text!='' and table.cell(i,2).text is not None:
            excellent=1
        competent = 0
        if table.cell(i, 3).text!='' and table.cell(i, 3).text is not None:
            competent=1
        basicacompetent=0
        if table.cell(i, 4).text!='' and table.cell(i, 4).text is not None:
            basicacompetent=1
        notcompetent = 0
        if table.cell(i, 5).text!='' and table.cell(i, 5).text is not None:
            notcompetent=1
        dontunderstand =0
        if table.cell(i, 6).text!='' and table.cell(i, 6).text is not None:
            dontunderstand=1
        appraisedata=[id,name,excellent,competent,basicacompetent,notcompetent,dontunderstand]
        data.append(appraisedata)

#读取评议表的目录,并处理目录中的docx文件,根据评议表计算评分,写入汇总表。
def readfile(filepah):
    files=os.listdir(filepah)
    for file in files:
        if file.find('.docx')>0:
            docfilepah=filepah+file
            procdoc(docfilepah)
    df = pd.DataFrame(data,columns=['序号','姓名','优秀','称职','基本称职','不称职','不了解'])
    print(df)
    df=df.groupby(['序号','姓名']).sum()
    df['票数'] = df.apply(lambda x: x.sum(), axis=1)
    df['计分'] = (df['优秀']*95+df['称职']*85+df['基本称职']*75+df['不称职']*65+df['不了解']*0)/len(df)
    df['评价']=df['计分'].map(getscore)
    print(df)
    write2excle('民主评议\\民主评议表汇总.xlsx',df)

#根据评分规则计算评级
def getscore(x):
    if x>=95:
        score='优秀'
    elif x>=80 and x<95:
        score='称职'
    elif x>=75 and x<80:
        score='基本称职'
    elif x<75:
        score='不称职'
    return score

#将汇总计算好的数据写入Excel
def write2excle(exclefile,dataframe):
    writer = pd.ExcelWriter(exclefile)
    dataframe.to_excel(writer)
    writer.save()
    print('输出成功')

if __name__ == '__main__':
    readfile('民主评议\\')

 

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

相关推荐

Python自动化办公:定制化读取Excel数据并写入Word表格

在数据处理与文档生成的工作流中,自动化技术正逐步取代传统的手动操作。其核心原理是通过编程脚本,实现对结构化数据的精准提取、转换与格式化输出,从而将人力从重复性劳动中解放出来。这项技术的价值在于显著提升工作效率、减少人为错误,并确保输出结果的一致性。它广泛应用于报告生成、数据汇总、信息归档等需要跨软件协作的场景。针对常见的性能瓶颈与样式控制难题,例如“python读取excel数据全部读取耗时5分钟”和“poi设置word表格单元格宽度”,本文将通过Python生态中的主流库,构建一个健壮、高效的定制化数据流

weixin_33798152的博客 494

python的panda库读写文件

可能是因为中文储存的时候是gbk格式,utf-8还是识别不了一些编码,所以可以尝试用gbk,需要设置编码方式encoding='gbk'。csv文件是以逗号为分隔符的文件,读取参数与excel基本类似,文件为gbk格式的csv,若不设置encoding参数,会报错。header: 默认为True,False没有列索引,如需更改列名,则header = ["列1","列2","列3"]excel,csv,txt写入文件的方式基本类似,以pandas的to_xx()方式写入。

weixin_50853979的博客 3240

Python办公自动化:用openpyxl和python-docx实现Excel到Word表格数据精准迁移

在数据处理与文档生成的工作流中,自动化脚本是提升效率的关键。其核心原理是通过编程接口(API)对结构化数据文件进行读写操作,实现跨应用的数据流转。这项技术的核心价值在于将人工重复操作转化为标准化、零差错的自动化流程,尤其适用于周报生成、客户信息整理、报告编制等需要频繁在Excel和Word间同步数据的场景。本文聚焦于使用Python生态中的openpyxl和python-docx这两个库,针对“python读取excel数据全部读取耗时5分钟”的性能痛点,提供了使用read_only模式与iter_rows

weixin_30384217的博客 392

Python 遍历读取Word文档全部内容

本文以遍历如下图的word文件作为例子。

Hushi1706IT的博客 5493

Python 实现导入三份EXCEL表自动生成每周的考核周报WORD文档

入手新部门,需要每周做一份维护组的考核报表,当初开始的时候做第一份考核报表花了近2个小时才做出一份考核报表。 后来想想作为一个小程序员,不能这么傻乎乎的做这些机械的工作,要做点自动化报表的小程序,经常近一个星期的晚上的修修补补终于完成。 本文采用了以下第三方包: # coding=utf-8 from Tkinter import * from tkFileDialog import * f...

wukai0909的博客 4159

python3根据excel表数据自动生成word格式数据报告

目录1. 完成xlsx数据读取2.对数据做一些处理3.生成图表4.创建word文件5.将分析结果保存入word文件中 本文主要是讲如何根据简单的xlsx数据,生成word数据报告,首先需要先读取与分析xlsx中的数据,通过排序等等方式固定好分析哪些方面,然后来编写对应的代码,对应的示例xlsx文件如下: 1. 完成xlsx数据读取 我们在读取xlsx文件时使用pandas读取与操作,代码如下: import pandas as pd # 读取excel文件 df = pd.read_excel("data

weixin_43639981的博客 5123

python自动化办公——定制化读取Excel数据并写入到word表格

实现了定制化读取Excel数据并写入到word复杂的表格中

AI~天海的博客 1万+

python汇总多个word到excel里

这个写的很简单,比之前上传的那个vba的简单,逻辑如下,给定目录,遍历所有doc转换成docx,然后循环读取所有docx里的第一个表格,进行重复值筛选,然后写入到excel里,用到了几个模块,需要提前导入

用python批量读取word文档并整理关键信息到excel表格

目标最近实验室里成立了一个计算机兴趣小组倡议大家多把自己解决问题的经验记录并分享就像在优快云写博客一样虽然刚刚起步但考虑到后面此类经验记录的资料会越来越多所以一开始就要做好模板设计(如下所示)方便后面建立电子数据库从而使得其他人可以迅速地搜索到相关记录据说“人生苦短,我用python”所以决定用python从docx文档中提取文件头的信息然后把信息更新到一个xls电子表格中,像下面这样(直接po...

sheldonxxd的博客 3万+

别再手动算临界转速了!用ANSYS Workbench 2023 R2快速搞定转子坎贝尔图(附完整APDL命令流)

本文详细介绍了如何利用ANSYS Workbench 2023 R2快速生成转子坎贝尔图,实现全自动临界转速分析。通过对比传统手动计算与Workbench自动化流程的效率差异,展示了其在旋转机械设计中的革命性优势,包括大幅缩短分析周期、提升精度至98.7%。文章还提供了完整的APDL命令流和实战案例,帮助工程师快速掌握这一高效工具。

weixin_42699679的博客 470

ESXI 8.0.3 ubuntu 24.04 直通显卡P40

手把手,一步步教你直通GPU,ESXI 8.0.3 ubuntu 24.04 直通显卡P40

qq_36433118的博客 4681

python:实现办公自动化-将文件生成excel表格

本来想接着写关于web的东西,不过老师突然留了个作业,就是将几百条word上面的数据转化成表格的形式. 但是很尴尬的是…我居然不会用word… 不过,咱们好歹也是学过python的人,写一个这样的脚本很简单. 一.处理的数据的示例 首先需要的数据是这样的: 要求是将后面的数据转化成第一行的表格.如图. 二.脚本的构思 首先,我们要将数据全部复制到一个新建的txt文件中.虽然python可以直接读取word文档,但是终究没有直接读取txt文件来的舒服.如图,这是我复制到txt文档以后的东西. data.

薯片薯条的博客 8万+

爬虫-Playwright逆向小红书

【代码】爬虫-Playwright逆向小红书。

weixin_44201223的博客 2426

Python 自动化办公 | 将 Word 表格转为 Excel

点击上方“编程派”,选择设为“设为星标”优质文章,第一时间送达!大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改)一...

codingpy的博客 2984

《阵列信号处理及MATLAB实现》阵列响应矩阵(均匀线阵、均匀圆阵、L型阵列、平面阵列和任意阵列)

《阵列信号处理及MATLAB实现》内容总结,如需阅读更详细内容请购买正版书籍。

APPLECHARLOTTE的博客 1万+

从玩具车到手机充电:手把手带你用Multisim仿真Buck/Boost电路(附工程文件)

本文通过Multisim仿真软件,手把手教你搭建Buck降压电路和Boost升压电路,实现从12V到5V或3.7V到5V的电压转换。文章详细介绍了电路搭建步骤、关键波形观测技巧及常见故障排查方法,并附赠工程文件,帮助电子爱好者快速掌握电源转换技术。

weixin_29159127的博客 241

将word试卷匹配转换为结构化表格

作者:小小明 Pandas数据处理专家,帮助一万用户解决数据处理难题。 需求 有一个下面这种形式的word表格: 希望能转换为下面这种格式的excel表格: 测试word文档读取 先测试一个word文档前1页的数据读取: from docx import Document doc = Document("编号02 质检员高级技师(一级)理论试卷.docx") for i, paragraph in enumerate(doc.paragraphs[:55]): print(i, parag.

小小明-代码实体的专栏 4万+

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4718

Python 办公自动化|从 Excel 到 Word

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

DEVELOPERAA的博客 2657

ctftools-all-in-one使用说明

OAEP (Optimal Asymmetric Encryption Padding) 是一种用于RSA加密的填充方案,目的是提高RSA加密的安全性。在CTF比赛中,如果模数N的两个因子比较接近,使用"费马分解(N)"可能会更快地得到结果;OAEP 是 RSA 的一种标准填充方式(在 PKCS#1 v2.0+ 中定义),因此这类题目本质上仍是 RSA 题,但。,导致你不能直接用常规的 RSA 解密公式 �=�� mod �m=cdmodN 得到有意义的明文。如果你在 CTF 中遇到 RSA 题,

2501_91682449的博客 1712

YOLOv8【第二章:卷积创新篇·第23节】一文搞懂,Transformer与卷积混合架构!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》,该专栏持续复现网络上各种热门内容(全网YOLO改进最全最新的专栏,质量分97分+,全网顶流),改进内容支持(分类、检测、分割、追踪、关键点、OBB检测)。且专栏会随订阅人数上升而涨价(毕竟不断更新),当前性价比极高,有一定的参考&学习价值,部分内容会基于现有的国内外顶尖人工智能AIGC等AI大模型技术总结改进而来,嘎嘎硬核。    ✨ 特惠福利:目前活动一折秒杀价!一次订阅,永久免费,所有后续更新内容均免费阅读!

**My Coding Family** 1385

利用Python将Word试卷匹配转换为Excel表格

公众号后台回复“图书“,了解更多号主新书内容作者:小小明来源:菜J学Python需求有一个下面这种形式的word表格:希望能转换为下面这种格式的excel表格:测试word文档读取先测试...

数据森麟 3070

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python根据表格内容修改word

python根据表格内容修改word 有两张表格,一张放着各产品简介,一张放着各产品的参数说明,需要提取各简介,然后再根据参数补充内容,结合在一起生成各个产品的综合介绍。虽然在产品数量不多的情况下可以手动整理,但还是比较麻烦而且容易出错。这里借助了python来进行。 1.读取EXCEL数据 作为数据处理的王者,python读取EXCEL有很多方法,有许多相关的库。这里采用了opeanpyxl,先加载表格,然后再选中活动工作表,就可以读取数据了。 from openpyxl import load_work

ffxyx33的博客 1750

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

docxtpl实战案例-审计脚注表格回填

作者:小小明 Pandas数据处理专家,帮助一万用户解决数据处理难题。 最近碰到一个需求: 虽然我没完全看懂啥意思,但大意就是: 1.读取word文档,将其中所有的表格都写入到一个excel文件中 2.对写好的excel做出一些修改(包括改某几个单元格的值和删除行),然后将修改后的excel数据回填到word表对应的位置 对于第一个需求,直接用pandas写出即可 对于第二个需求,先生成模板,再用docxtpl模板渲染 关于docxtpl,我已经根据官方文档,制作了一份操作手册:https://blo.

小小明-代码实体的专栏 3万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python办公自动化|从Excel到Word

前言 在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者提出的真实需求来讲解如何使用Python从Excel中计算、整理数据并写入Word中,其实并不难,主要就是以下两步: openpyxl读取Excel获取内容 docx读写Word文件 那我们开始吧! 需求确认 首先来看下我们需要处理的Excel部分数据,因涉及隐私已经将数...

早起Python 2123
上一篇: Python函数与lambda 表达式(匿名函数)
下一篇: 使用Python分析网易云歌曲评论信息,通过可视化处理我发现了这些有趣的规律
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值