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

目录
  • 前言
  • 一、首先导入包
  • 二、读评价表所在的目录文件
  • 三、读word文件,处理word中的表格数据
  • 四、统计计算
  • 五、将统计计算结果写入汇总Excel
  • 完整代码
  • 总结

前言

快过年了,又到了公司年底评级的时候了。今年的评级和往常一下,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门收集起来根据收集上来的评价表进行汇总统计。想想要收集几十号人的评价表,并根据每个人的评价表又要填到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('民主评议\\')

全部源代码:https://github.com/xiejava1018/pythonprocword

总结

到此这篇关于利用Python实现读取Word表格计算汇总并写入Excel的文章就介绍到这了,更多相关Python读取Word计算汇总写入Excel内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现Word表格转成Excel表格的示例代码

    准备工作 pip install docx pip install openpyxl 具体代码 # 没有的先pip install 包名称 from docx import Document from openpyxl import Workbook document = Document('Docx文件路径.dicx') count = 0 tables = [] wb = Workbook() ws = wb.active # 设置列数,可以指定列名称,有几列就设置几个, # A对应列1,B

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

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

  • python 将Excel转Word的示例

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

  • 利用Python实现读取Word表格计算汇总并写入Excel

    目录 前言 一.首先导入包 二.读评价表所在的目录文件 三.读word文件,处理word中的表格数据 四.统计计算 五.将统计计算结果写入汇总Excel 完整代码 总结 前言 快过年了,又到了公司年底评级的时候了.今年的评级和往常一下,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门收集起来根据收集上来的评价表进行汇总统计.想想要收集几十号人的评价表,并根据每个人的评价表又要填到Excel中进行汇总计算统计给出每个人的评价,就头大.虽然不是个什么难事,但是是个无脑的细致活.几十个

  • 利用Java读取Word表格中文本和图片的方法实例

    目录 1. 程序环境准备 Jar导入步骤及方法: 方法1:手动导入. 方法2:Maven仓库导入. 2. Java代码 3. 文本.图片读取效果 总结 本文通过Java程序来展示如何读取Word表格,包括读取表格中的文本和图片.下面是具体实现的步骤和方法. 1. 程序环境准备 代码编译工具:IntelliJ IDEA Jdk版本:1.8.0 测试文档:Word .docx 2013 Jar包:free spire.doc.jar 3.9.0 用于测试的Word文档如下: Jar导入步骤及方法:

  • python Pandas 读取txt表格的实例

    运行环境 Python 2.7 操作实例 1.原始文本格式:空格分隔的txt,例如 2016-03-22 00:06:24.4463094 中文测试字符 2016-03-22 00:06:32.4565680 需要编辑encoding 2016-03-22 00:06:32.6835965 abc 2016-03-22 00:06:32.8041945 egb 2.pandas 读取数据 import pandas as pd data = pd.read_table('Z:/test.txt'

  • 教你利用python如何读取txt中的数据

    目录 前言 方法一:运用open()函数 方法二:使用numpy包的loadtxt方法 方法三:使用pandas的read_table方法进行读取 总结 前言 当我们在用python时可能会遇到想要把txt文档里的数据读取出来然后进行绘图,那么我们要怎么才能够将txt里的数据读取出来呢? 假设有txt文本如下: 想要把上述文本数据读取出来,可以用以下方法: 方法一:运用open()函数 该方法使用最基本的open函数进行读取,此处将会把数据读取到一个列表中,这个方法一般就是open打开文件.re

  • Python实现将Word表格嵌入到Excel中

    今日需求 其实就是把Word中的表格转到Excel中,顺便做一个调整.这个需求在实际工作中,很多人还是经常碰到的! 如果单单是两个表格,那只要简单的复制黏贴即可,但如果上百了呢?那就得考虑自动化了.好在今天碰到的需求中的原文件格式是比较有规律的,那直接来尝试一下. # 首先要pip install python-docx # 如果原文件是doc格式,那就先转成docx from docx import Document import pandas as pd path = "./word表格转e

  • 用python实现读取xlsx表格操作

    目录 前言 读操作 总结 前言 快要过年了,现在是工作的事情也不想干,学习也完全学不进去,关于xlsx的操作原本昨天已经写好了,不过悲催的是,忘记发布了直接关浏览器关闭后发现已经丢失了.以下操作均对照改表格操作: 读操作 获取sheet的方法通过索引获取sheet表格: table = worbook.sheets()[0] table = worbook.sheet_by_index(0) 通过sheet名称获取: table = worbook.sheet_by_name(sheet_nam

  • 利用Python程序读取Excel创建折线图

    目录 一.打开命令提示符 二.通过pip命令安装所需要的工具库 三.打开IDLE开始编程 附录 1.常用的工具库安装 2.pip常用命令 3.常用的工具库 4.常用的marker 5.常用的颜色 一.打开命令提示符 方法一:window+R键 ——输入cmd 方法二:在此搜索cmd进入命令提示符 二.通过pip命令安装所需要的工具库 输入pip install pandas命令安装pandas工具库输入pip install matplotlib命令安装matplotlib工具库其他的工具库安装

  • Python实现批量识别银行卡号码以及自动写入Excel表格步骤详解

    每当有新员工入职,人事小姐姐都要收集大量的工资卡信息,并且生成Excel文档,看到小姐姐这么辛苦,我就忍不住要去帮她了… 于是我用1行代码就实现了自动识别银行卡信息并且自动生成Excel文件,小姐姐当场就亮眼汪汪的看着我,搞得我都害羞了~ 第一步:识别一张银行卡 识别银行卡的代码最简单,只需要1行腾讯云AI的第三方库potencent的代码,如下所示.左右滑动,查看全部. # pip install potencent import potencent # 可以填写本地图片的地址:img_pat

  • python实现翻译word表格小程序

    背景 原是弱电集成的设计员,纠结很久后参加了python培训机构转职后的一员小白,由于一次工作中需要翻译一份近100页word表格,纯手工翻译大概三个小时,为了解决这种重复又耗时的劳动,并重温python相关知识所以制作了该小程序. 脚本详情 import re import docx import time import pandas as pd from selenium import webdriver from selenium.webdriver.chrome.options impo

随机推荐