最近在客户现场接到一个任务,需要将全国所有省份的数据进行合并。目录是分层级的,首先是省份目录、然后地级市目录、最里面是区县目录。
需要将每个目录中的数据进行合并,然后添加4列数据,并将某一个列的数据进行拆分和处理。总共将近3000张个Excel文件需要处理,
如果手工处理的话,估计要搞一个星期才能搞完。为了在规定时间内完成任务,我通过编写python程序实现了这样的功能。
这里我简单分享下单个目录中Excel文件合并的模块。

  1. Python代码:

    #!/usr/bin/env python
    # coding:utf-8
    """
    @File Name: zwc002.py
    @Version: 1.0
    @Python Version: 3.7
    @Author: liguanbin
    @Created Time: 2021/5/21 9:04
    @Software: PyCharm
    @Desc:
    """

    import os
    import xlrd
    import xlsxwriter
    import glob

    # 获取要合并的所有excel表格
    def get_excel():
    global file_path
    global current_folder
    global new_excel_path

    file_path = input("请输入Excel文件所在的目录:")

    if not file_path.endswith('\\'):
    current_folder = os.path.basename(file_path)
    file_path = file_path + "\\"
    else:
    current_folder = os.path.basename(os.path.dirname(file_path))

    new_excel=current_folder + "_合并结果.xlsx"
    new_excel_path = os.path.join(file_path,new_excel)
    # 新建的exce文件绝对路径

    if os.path.isfile(new_excel_path):
    os.remove(new_excel_path)
    # 如果文件已经存在就删除,避免重复执行插入重复

    all_excel = glob.glob(file_path + "*.xlsx")
    print("该目录下有" + str(len(all_excel)) + "个Excel文件:")
    if (len(all_excel) == 0):
    return 0
    else:
    for i in range(len(all_excel)):
    print(all_excel[i])
    return all_excel

    # 获取sheet下的数据
    def get_sheet_data(sheet):
    row = sheet.nrows
    for i in range(row):
    if (i == 0):
    global biao_tou
    biao_tou = sheet.row_values(i)
    continue
    values = sheet.row_values(i)
    all_data1.append(values)

    return all_data1

    if __name__ == '__main__':

    all_excel = get_excel()
    # 得到要合并的所有exce表格数据

    if (all_excel == 0):
    print("该目录下无.xlsx文件!请检查您输入的目录是否有误!")
    exit()

    all_data1 = []
    # 用于保存合并的所有行的数据

    # 下面开始文件数据的获取
    for excel in all_excel:

    fh = xlrd.open_workbook(excel)
    # 打开文件
    sheets = fh.sheets()
    # 获取文件下的所有sheet

    for sheet_index in range(len(sheets)):

    all_data1 = get_sheet_data(sheets[sheet_index])
    # 获取一个sheet下的所有行的数据,追加到数组中

    all_data1.insert(0, biao_tou)
    # 表头写入(只需要写入一个)

    fh1 = xlsxwriter.Workbook(new_excel_path)
    # 新建一个excel表

    title_formater=fh1.add_format({'border': 1,'bold':True,'align':'center','bg_color':'3399FF','font_size':12})
    # 标题格式:边框:1、加粗、居中、填充:蓝色、字体:12
    common_formater = fh1.add_format({'border': 1})
    # 数据格式:边框:1

    new_sheet_name="执常委列表"
    # 指定sheet的名称
    new_sheet = fh1.add_worksheet(new_sheet_name)
    # 新建一个sheet

    for i in range(len(all_data1)):
    for j in range(len(all_data1[i])):
    c = all_data1[i][j]
    if i==0:
    new_sheet.write(i, j, c, title_formater)
    else:
    new_sheet.write(i, j, c,common_formater)

    fh1.close()
    # 关闭该exce表

    print("\033[1;34m文件合并成功,请查看" + new_excel_path + "\033[0m")

    效果演示:

 合并后的文件:

Python-目录下相同格式的Excel文件合并的更多相关文章

  1. [bash]查找指定目录下符合格式的txt文件

    需求: 查找指定目录下符合yyyy-MM-dd(-b)NNN.txt格式的文件,如“2020-03-22-b888.txt” 目标目录内容: [root@localhost bashs]# ll /r ...

  2. 把一个文件夹下的多个excel文件合并到同一个excel的一个sheet里

    #!/usr/bin/python # -*- coding: UTF-8 -*- import pandas as pd import os if __name__ == '__main__': F ...

  3. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  4. Python遍历一个文件夹下有几个Excel文件及每个Excel文件有几个Sheet

    一. 解决问题: 工作中常会遇到合并Excel文件的需求,Excel文件数量不确定,里面的Sheet 数量是可变的,Sheet Name是可变的,所以,需要用到遍历一个文件夹下有几个Excel文件,判 ...

  5. C#获取文件夹下指定格式的所有文件

    C#获取文件夹下指定格式的所有文件的方法,虽然很简单,但还是分享一下吧,用到时可以稍加修改和优化就可以使用. 获取指定目录下所有文件 //最要使用 System.IO.Directory.GetFil ...

  6. [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持"Add As Link"方式 ...

  7. .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持“Add As Link”方式引入文件.这时需要手 ...

  8. Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例

    1. 复制指定目录下指定后缀名的文件并修改名称的案例     需求:复制指定目录下的指定文件,并修改后缀名.  • 指定的文件是:.java文件.     • 指定的后缀名是:.jad     • 指 ...

  9. Tomcat下使用C3P0配置JNDI数据源(在项目的META-INF目录下创建context.xml的文件)

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包

  10. [ Windows BAT Script ] 删除某个目录下的所有某类文件

    删除某个目录下的所有某类文件 @echo off for /R %%s in (*.txt) do ( echo %%s del %%s ) pause @echo on

随机推荐

  1. 2023是AI爆发的元年,程序员赚钱的机会来了,附49个机会!

    以下是程序员利用AI做代码生成的赚钱思路.方案,共49条,按照不同分类列出: 基于自然语言生成的机会: 1. 开发基于AI的自动生成代码软件,应用于网站开发.移动应用开发.家庭自动化.人工智能等各个领 ...

  2. 概率图模型 · 蒙特卡洛采样 · MCMC | 非常好的教学视频

    https://www.bilibili.com/video/BV17D4y1o7J2?p=1 非常感谢!感觉学会一点了,应该能写作业了

  3. Skywalking 搭建 nacos 注册中心及mysql 存储的集群架构

    本文为博主原创,未经允许不得转载 Skywalking 集群是将skywalking oap作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalki ...

  4. python json.loads()、json.dumps()和json.dump()、json.load()区别

    json.loads().json.dumps()和json.dump().json.load()分别是两组不同用法 带s的用于数据类型的转换,不带s的用于操作文件. json.loads().jso ...

  5. 【动画进阶】神奇的 3D 卡片反光闪烁动效

    最近,有群里在群里发了这么一个非常有意思的卡片 Hover 动效,来源于此网站 -- key-drop,效果如下: 非常有意思酷炫的效果.而本文,我们不会完全还原此效果,而是基于此效果,尝试去制作这么 ...

  6. 问题--如何快速复制Typora(Markdown)中的代码块/区块等

    使用快捷键ctrl+E,选中相同格式的文字,然后快速复制即可

  7. 浪潮CE3000F飞腾PC安装UOS/银河麒麟双系统的过程

    浪潮CE3000F飞腾PC安装UOS/银河麒麟双系统的过程 背景 为了进行兼容性验证, 部门采购过一批浪费CE3000F的PC机器. 前期系统安装的是UOS, 但是有同事借走机器后重装了银河麒麟V10 ...

  8. MYSQL varchar和nvarchar一些学习

    MYSQL varchar和nvarchar一些学习 背景 先试用 utfmb3的格式进行一下简单验证 注意脚本都是一样的. create database zhaobsh ; use zhaobsh ...

  9. [转帖]10.2 Data Collector与MDW

    10.2 Data Collector与MDW Data Collection功能是SQL SERVER 2005版本提供的数据库监控报表的功能,通过定时地对数据库的语句运行情况,服务器各种资源的监控 ...

  10. process-exporter 监控linux机器进程使用情况

    process-exporter 监控linux机器进程使用情况 背景 前期一直想进行 关于 IP地址的来源和目的地的监控 但是耗费了很多精力都没有搞定. 感觉应该去偷师一下安全监控软件的使用方式. ...