当前位置:   article > 正文

python实现多个excel文件两种方式合并:多表单形式合并、单表单(增加标识列来区分不同文件)形式合并_几个格式一样的excel 非空的单元格数据合并为一个excel中 python

几个格式一样的excel 非空的单元格数据合并为一个excel中 python

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

原始文件分布截图如下:
                      

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

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

         合并后文件截图如下:

  

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

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

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

      合并后文件截图如下:
              

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/317916
推荐阅读
相关标签
  

闽ICP备14008679号