使用python解析excel实现工作效率统计

来源:互联网 发布:占星术杀人魔法 知乎 编辑:程序博客网 时间:2024/06/01 17:31

因为工作关系,常需要分析成员每周工作情况。如果靠人工统计,费力又耗时,想到何不利用python自动化来完成这样的工作

主要思路就是,通过python从原始数据中,统计出一周内每个人在各种事件中耗费的时间,保持到一个sheet中

首先需要用到python里面几个操作excel的库

from openpyxl.workbook import Workbook  #ExcelWriter,里面封装好了对Excel的写操作from openpyxl.writer.excel import ExcelWriter  from openpyxl.reader.excel import load_workbook
并加载解析输入参数的库

from optparse import OptionParser
接下来,先解析输入参数,获得要操作的文件路径

usage = 'Usage: %prog file'parser = OptionParser(usage)(options, args) = parser.parse_args()path = args[0]
然后,通过load_workbook打开excel文档

wb=load_workbook(path)
接着,创建新的sheet,并从原有sheet中获得原始数据

whs_sheet = wb.create_sheet(title='whs')data_sheet = wb.get_sheet_by_name("owssvr")
下面就开始计算原始数据的最大行列数和新建sheet的最大行列数

MaxRow = data_sheet.max_rowMaxColumn = data_sheet.max_columnMaxWhsRow = len(NameList)MaxWhsColumn = len(WhsList)
再创建一个二维数组,对应人名和事件的映射

WhsArry = [[0 for i in range(MaxWhsColumn-1)]for i in range(MaxWhsRow)]
接下来,就是通过几个循环,来将数据统计好并写入到新建的sheet中

for name in NameList:for Row in range(2, MaxRow+1):if name.split('.', 1)[0] == data_sheet.cell(row=Row, column=2).value.split(' ', 1)[0]:whs = data_sheet.cell(row=Row, column=8).valuehous = data_sheet.cell(row=Row, column=6).valueWhsArry[NameList.index(name)][WhsList.index(whs)-1] = WhsArry[NameList.index(name)][WhsList.index(whs)-1] + housfor Row in range(2, MaxWhsRow+2):for Column in range(2, MaxWhsColumn+1):if Column == MaxWhsColumn:for count in range(2, MaxWhsColumn+1):CellFrom = 'B'+str(Row)CellTo = 'H'+str(Row)whs_sheet.cell(row=Row, column=Column).value = '=SUM('+CellFrom+':'+CellTo+')'else:whs_sheet.cell(row=Row, column=Column).value = WhsArry[Row-2][Column-2]
最后,通过save将对文档的修改保存下来

wb.save(path)


整个程序,其实相当简单,基本有点编程基础的都能完成,主要是在工作过程中,能时时保持“偷懒”的习惯,能够程序做的事情,尽量不要人工来做








原创粉丝点击