python从word提取表格数据,python docx读取word的表格

  python从word提取表格数据,python docx读取word的表格

  本文主要介绍如何使用Python读取Word表格,计算汇总并写入Excel的相关信息。通过示例代码非常详细,对你的学习或者工作有一定的参考价值。有需要的朋友可以参考一下。

  00-1010前言1。第一个导入包2。阅读评估表所在的目录文件。第三,读取word文件,在word中处理表格数据。第四,进行统计计算。第五,将统计计算结果写入汇总Excel完整代码汇总。

  

目录

  快过年了,又到了公司年底评级的时候了。今年的评分和往常一样。每个人都要填写公司的民主测评表,给每个同事一个测评分数,然后部门收集,根据收集到的测评表进行汇总统计。想想收集几十个人的评价表,填到Excel里汇总计算统计给大家评价,这可是大事。虽然不难,但这是一项无脑细致的工作。几十个人的评价也要花大部分时间才能得到,多了容易出错。如果是,我想到的就是简单的用Python写个小程序,自动处理这些脏活。评级要年年评,年年用。

  我们需要做的是读取某个文件夹中word文档中的评价表,根据表格内容进行处理,然后汇总所有表格数据,根据计算规则计算出每个人的分数,再根据分数计算出每个人的评价。将总结写入Excel。

  不可否认,用Python来实现这样的事情确实很方便。人生苦短。我用Python。

  我用python的docx包处理word,熊猫处理数据写入excel。

  

前言

  安装docx

  pip安装熊猫

  熊猫靠openpyxl包写excel,所以也是导入的。

  pip安装openpyxl

  

一、首先导入包

  通过python的os包,列出文件夹中的文件,识别出的文件。docx。

  files=os.listdir(filepah)

  对于文件:中的文件

  if file.find(。docx’)0:

  docfilepah=filepah文件

  

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

  数据=[]

  #读取word的docx评估表单文件,读取word中的表单数据。

  def procdoc(docfilepath):

  document=文档(docfilepath)

  表格=document.tables

  表格=表格[0]

  对于范围(1,len(table.rows)):中的I

  id=int(table.cell(i,0))。正文)

  name=table.cell(i,1)。文本

  优秀=0

  if table.cell(i,2)。文字!= 和table.cell(i,2)。文本不是None:

  优秀=1

  胜任=0

  if table.cell(i,3)。文字!= 和table.cell(i,3)。文本不是None:

  胜任=1

  基本能力=0

  if table.cell(i,4)。文字!= 和table.cell(i,4)。文本不是None:

  基本能力=1

  notcompetent=0

  if table.cell(i,5)。文字!= 和table.cell(i,5)。文本不是None:

  不合格=1

  dontunderstand=0

  if table.cell(i,6)。文字!= 和table.cell(i,6)。文字不是没有

  ne:

   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内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 怎么在word中下载mathtype,word中怎么导入mathtype
  • php生成word文档的三种实现方式是什么,php 生成word
  • php生成word文档的三种实现方式是什么,php 生成word,PHP生成word文档的三种实现方式
  • IceSword,ice of swords
  • IceSword,ice of swords,IceSword (冰刃) 应用图文指南
  • 基于wordpress的博客建设,如何使用wordpress建站
  • ,,WordPress中设置Post Type自定义文章类型的实例教程
  • ,,MYSQL安装时解决要输入current root password的解决方法
  • 学生成绩管理系统c语言课程设计报告,学生成绩管理系统c语言程序设计,C语言学生成绩管理系统课程设计word版
  • 如何用python把pdf转为word,Python转PDF
  • word365怎么转pdf,office365word怎么转换pdf_1
  • Word文档图片不显示,Word文档的图片无法显示出来
  • 如何将多个wps文件合并成一个,WPS多个word文档合并成一个文档
  • wpsword怎么取消首字母大写,wps word取消首字母大写
  • 如何word文档删除空白页,怎样在word文档删除空白页
  • 留言与评论(共有 条评论)
       
    验证码: