使用python统计改善提案

第一次在C站发表文章

2018年首先开始浏览C站,计划通过C站不断提升自我,首先分享的是在工作当中如何使用python提升自己的工作效率。

平时工作当中需要整理科室的改善提案,虽然可以分发给相关联络人员进行整理,但是整理的速度相对有点慢的,同时整理出来的效果不利于后期的查询和维护,故需要设计一个脚本程序用于快速统计改善提案。
目前公司的改善提案主要通过Word格式进行提交,(我觉得公司可以开发一个系统进行统筹的,但是公司估计没有钱就无法进行开发了),所以如何进行快速遍历当地文件夹中的word文件并提取相关的信息非常重要,如下图:
使用python统计改善提案_第1张图片
一个科室有200号人,一个公司有1万号人,想想工作量就知道有多少了!
通过学习python,可以进行遍历所有的word文件,提取关键信息后重新命名并进行统筹:
思路方法:1、将word文件进行统一格式,doc格式和docx格式在python当中需要不同的包进行读取,这里统一使用docx包进行读取,将doc另存为docx格式。
2、读取关键信息,打开改善提案表后如图,
使用python统计改善提案_第2张图片
其中word里面都是通过表格进行存储信息的,所以可以使用document里面的tables包进行提取信息
3、提取信息后重新命名
4、使用os.walk遍历文件夹位置
5、当然,要让科室的其他人使用的话,可以考虑做成GUI的方法(毕竟科室里面理解GUI的人太少了),只要黏贴目标的文件夹位置和保存的Excel目标位置,就可以点击完成相关的脚本工作。
不多说了,技术人只说技术话,直接上代码:

import os
import docx,xlwt
import re
import time
from win32com import client as wc
from tkinter import *
import sys

global path,path2,entry1,entry2

def Savedocx(fdir):
word=wc.Dispatch(‘Word.Application’)
doc=word.Documents.Open(fdir)
doc.SaveAs(os.path.splitext(fdir)[0]+".docx",16)
doc.Close()
word.Quit()
os.remove(fdir)

def changedocname(fdirname):
dc=docx.Document(fdirname)
table=dc.tables
renyuan=re.findall(r’[\S]{2,3}’,table[0].cell(0,1).text)[0]
tianmingcheng=re.findall(r’[\S]{1,99}’,table[0].cell(1,1).text)[0]
if “\” in tianmingcheng:
tianmingcheng.replace("\","、")
if ‘/’ in tianmingcheng:
tianmingcheng.replace("/","、")
tian_date=table[0].cell(1,3).text
try:
gangwei=re.findall(r’[\S]{1,20}’,table[0].cell(0,7).text)[0]
except:
if gangwei==None:
#if not gangwei.strip():
gangwei=“没填写”
new_fname=str(tianmingcheng)+"#"+renyuan+"#"+str(gangwei)+".docx"
os.rename(fdirname,os.path.dirname(fdirname)+"\"+new_fname)

def bianlidir(path):
all=[]
for fpath,dirs,fs in os.walk(path):
for f in fs:
filename=os.path.join(fpath,f)

           if filename.endswith(".doc"):
                Savedocx(filename)
                
 for fpath,dirs,fs in os.walk(path):
      for f in fs:
           filename=os.path.join(fpath,f)
           all.append(filename)
 for i in all:
      print(i)
      try:
           changedocname(i)
      except:
           print(i+" in error")
 return all

def tongji_execl(path,path2):

 tongjiexcel=[]     
 for fpath,dirs,fs in os.walk(path):
      for f in fs:
           filename=os.path.join(fpath,f)
           tongjiexcel.append(filename)
 title=["改善提案名称","改善人姓名","提案属性"]
 book=xlwt.Workbook()
 sheet1=book.add_sheet('Sheet1',cell_overwrite_ok=True)
 for i in range(len(title)):
      sheet1.write(0,i,title[i])
      for j in range(len(tongjiexcel)):
           try:
                sheet1.write(j+1,i,os.path.split(tongjiexcel[j])[-1].split("#")[i].split(".")[0])
           except:
                continue
           
 book.save(path2+"/"+"改善提案统计.xls")

def tongji(path,path2):
a=1
if os.path.isdir(path) and os.path.isdir(path2):
bianlidir(path)
tongji_execl(path,path2)
a=0
sys.exit
else:
print(“路径输入有误,请重新输入路径”)

def click_button():
global entry1
global entry2
path=entry1.get()
path2=entry2.get()
tongji(path,path2)

def tuxingzhanshi():
global entry1
global entry2
global frame
frame=Tk()
frame.title(“改善提案统计”)
label1=Label(frame,width=100,text=“请输入需要遍历改善提案的文件夹地址”)
label1.pack()
entry1=Entry(frame)
entry1[“width”]=100
entry1.pack()
label2=Label(frame,width=100,text=“请输入需要保存遍历文档的Excel地址”)
label2.pack()
entry2=Entry(frame)
entry2[“width”]=100
entry2.pack()
b1=Button(frame,text=“开始统计”,width=15,command=click_button)
#b1.bind("",click_button)
b1.pack()
frame.mainloop()
if name==‘main’:
tuxingzhanshi()

如果有需要的同学,可以联系本人进行沟通学习,联系邮箱:[email protected]

你可能感兴趣的:(技术文章,python,自动化统计)