python合并多个excel表格数据(一)

来源:互联网 发布:景观大数据视频教程 编辑:程序博客网 时间:2024/06/07 20:15

参考:

python 处理 Excel 表格

Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据


要解决的问题:

公司每周有一个日常统计任务量的表格,每个表格有十几个sheet,分别是不同组员的。每月需要把四-五周表格汇总,统计该组员每月任务量。

不知道excel怎么能弄好,也不会VBA。

希望能一劳永逸地解决这个问题,把每月花在统计excel的时间从2小时压缩到10分钟 偷笑


解决步骤:

1.下载安装xlrd、xlwt、xlutils。

2.新建一个当月统计表格。用组员名命名好所需的sheet。这一步可以用python做,但excel直接做比较快。

3.用python把所有的表格数据按组员姓名汇总到当月统计表格。代码如下:

import xlrdimport xlwtfrom xlutils.copy import copycount = 0x = 1output_path = input('请给出统计表格地址:')while True:    confirm_1 = input('继续请回车,终止程序请输入n。')        if confirm_1 == 'n':        print ('程序已终止,可关闭。')        break    else:            name = input('请输入组员英文名: ')  #指明要读取哪个组员的数据        sheetNum = int(input("放在第几个sheet:"))-1  #指明该组员数据放在统计表格第几个sheet                while True:            path = str(input('请输入源表格路径。如该组员已统计完,请输入n。\n'))#指明要打开的表格            if path == 'n':                break            else:                data = xlrd.open_workbook(path) #打开表格                print ('该表格含有以下组员资料:',data.sheet_names())  #列举所有sheet                confirm_2 = input('如该表格不含所需组员资料,请输入n。继续请回车。\n')                                if confirm_2 == 'n':                    print ('已退出该表格。\n')                    continue                else:                                    table = data.sheet_by_name(name)    #打开对应数据                    rowNum = table.nrows    #源数据表格数据数目                    oldbook = xlrd.open_workbook(output_path)   #打开统计表格                    newbook = copy(oldbook) #复制                    newsheet = newbook.get_sheet(sheetNum)    #读取统计表格的对应条目                    for i in range (1,rowNum):                        layer = table.cell(i,4).value   #源表格layer数据                        mistake = table.cell(i,2).value #源表格mistake数据                        newsheet.write(count,0,layer)    #把layer数据复制到新表格                        newsheet.write(count,1,mistake)  #把mistake数据复制到新表格                        #然后不断重复                        i = i+1                        count = count + 1                          print ("write new values ok",'第',x,'次')                    newbook.save(output_path)                    del i                    print ("save with same name ok",'第',x,'次\n')                    x = x+1print ('Done')

4.在当月统计表格里sum一下就好了。


感言:纯新手的代码orz。两小时能做完的表格,代码写了一天半,再次orz。不过第一次为了解决一个实际问题写代码,居然还解决了,o(≧v≦)o~~好棒


0 0