博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
excel合并
阅读量:5086 次
发布时间:2019-06-13

本文共 3453 字,大约阅读时间需要 11 分钟。

excel合并

优势:不管下级文件夹有多少,都可以找到excel并合并

   点击3下,批量操作

改进点:必须要求列索引(列标题)一样

    sheet功能未添加

    数据去重(依据实际业务情况,不一定是id去重)

import  os# FROM_DIR = os.getcwd()# TO_FILE = os.path.join(FROM_DIR, 'combine.xlsx')# print(FROM_DIR)# # print(TO_FILE)# # D:\PycharmProjects\combine_excel# # D:\PycharmProjects\combine_excel\combine.xlsx## for _root, _dirs, _files in os.walk(FROM_DIR):  # dirs 文件夹  files 文件#     print(_files)##!/usr/local/bin/python3# -*- coding: utf-8 -*-'''合并指定文件夹下所有Excel文件到同一个文件'''import osimport collectionsimport operator  # 进行加减乘除等等运算from openpyxl import load_workbookfrom openpyxl import Workbookdef search_excel(from_dir, to_file):    '''遍历from_dir文件夹,查找Excel文件,返回结果列表        s.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。    '''    _results = []    for _root, _dirs, _files in os.walk(from_dir):  # root 路径  dirs 路径下的文件夹  files 文件夹内的文件名        print(_root,_dirs,_files)        for _file in _files:            if _file.endswith('.xlsx'):                _results.append(os.path.join(_root, _file))                print("_results:",_results)  # 获得路径列表    try:        print('Remove combine.xlsx.')        print("to_file:",to_file)        _results.remove(to_file)  # remove() 函数用于移除列表中某个值的第一个匹配项。    except ValueError:        print('combine.xlsx not exist.')    return _resultsdef load_excel(excel_file):    '''读取Excel文件内容,返回Excel的标题数组和数据有序字典    excel_file : excel文件的路径    '''    _wb = load_workbook(excel_file, read_only=True)    _ws = _wb.active    # print(type(_ws),"----------------------------")   # 
_title = [] _items = collections.OrderedDict() for _r in _ws.rows: # 按行获取单元格(Cell对象) - 生成器 print("_r:",_r) if not _title: for _i in _r: print(_i.value) _title.append(_i.value) else: _item = [] for _i in _r: print(_i.value) _item.append(_i.value) _items[_item[0]] = _item _wb.close() print(_title,_items,'---------------------------') return _title, _itemsdef save_excel(excel_file, excel_title, excel_items): '''保存Excel文件''' _wb = Workbook() _ws = _wb.active _ws.append(excel_title) for _k, _v in excel_items.items(): _ws.append(_v) _wb.save(excel_file)def combine(from_dir, to_file): '''合并指定文件夹下所有Excel文件到同一个文件 collections(英文,收集、集合),里面自带了一个子类OrderedDict,实现了对字典对象中元素的排序。 ''' _excel_files = search_excel(from_dir, to_file) # 返回一个列表,列表内数各个文件的路径 if not _excel_files: return _excel_title = [] _excel_content = collections.OrderedDict() for _file in _excel_files: print('Parsing ' + _file) _title, _items = load_excel(_file) # 调用load_excel 函数 if not _title or not _items: print('Skip since it is empty.') continue if not _excel_title: _excel_title = _title elif not operator.eq(_title, _excel_title): print('Warning: Excel title format are different!') for _k, _v in _items.items(): _excel_content[_k] = _v print('Parsing done.') if not _excel_title or not _excel_content: print('All files is empty.') return save_excel(to_file, _excel_title, _excel_content)if __name__ == "__main__": print('begin') FROM_DIR = os.getcwd() TO_FILE = os.path.join(FROM_DIR, 'combine.xlsx') combine(FROM_DIR, TO_FILE) print('end')
excel合并

 

转载于:https://www.cnblogs.com/nick477931661/p/9112048.html

你可能感兴趣的文章
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>