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

参考:

python 处理 Excel 表格

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


要解决的问题:

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

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

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


解决步骤:

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

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

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

import xlrd
import xlwt
from xlutils.copy import copy

count = 0
x = 1

output_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+1
print ('Done')


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


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


  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yesminax

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值