python实现多个excel文件两种方式合并:多表单形式合并、单表单(增加标识列来区分不同文件)形式合并

      我们手里面有很多个相同结构的Excel表格,项目经理说这样看起来很不直观,你帮我合并到同一个Excel文件中去,我想了一下有两种实现方式:

原始文件分布截图如下:
                      

一、将多个Excel文件通过多表单sheet的形式合并到同一个Excel文件中去,实现如下:
 

def trans2Excel(data='Results/',savepath='data.xls'):
    '''
    将指定目录下所有的Excel文件合并到一个Excel中(多表单sheet的形式)
    '''
    workbook=xlwt.Workbook(encoding='utf-8')
    json_list=os.listdir(data)
    for one_json in json_list:
        one_json_path=data+one_json
        one_code=one_json.split('.')[0].strip()
        one_res_data_list=trans2Excel(data_path=one_json_path)
        print 'one_res_data_list_length: ',len(one_res_data_list)
        i=0
        table=workbook.add_sheet(one_code)
        for one_list in one_res_data_list:
            for j in range(len(one_list)):
                table.write(i,j,one_list[j])
            i+=1
    workbook.save(savepath)

         合并后文件截图如下:

  

       从上图可以看到,下方有很多的不同的sheet,就是上述目录中的文件构成的子表单。

二、 通过增加标识列的方式来区分不同Excel文件,进而使用单表单来实现合并,实现如下:
 

def trans2Excel2(data='Results/',city_path='city.txt',savepath='data.xls'):
    '''
   不是多表单sheet的形式,而是一个表单,只是增加了标识列
    '''
    res_list=[['timePoint','rain1h','rain6h','rain12h','rain24h','temperature','humidity','pressure','windSpeed','windDirection','code','name']]
    json_list=os.listdir(data)
    for one_json in json_list:
        one_json_path=data+one_json
        one_code=one_json.split('.')[0].strip()
        one_res_data_list=trans2Excel2(data_path=one_json_path,city_path=city_path)
        print 'one_res_data_list_length: ',len(one_res_data_list)
        if one_res_data_list:
            res_list+=one_res_data_list
    write2Excel(res_list,savepath=savepath)

      合并后文件截图如下:
              

       最后两列是我们添加的地区和编码的标识列来区分不同地区。 

        上面两种方式都可以实现多个相同结构Excel文件合并的问题,不同结构的Excel表单文件没有合并的意义。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Together_CZ

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值