百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

代码分享:Python和VB代码实现批量合并EXCEL数据,拿走不谢

wptr33 2025-05-11 01:42 17 浏览

在实际工作中,您经常需要处理各种Excel文件,例如合并很多个相同格式的Excel文件,或者同一个excel文件中很多个sheet,这种情况是不是常常令您头疼?

您是否想过让计算机帮您自动处理?说不定,您花两天做的事情,计算机十多分钟可能就完成了。

下面提供了三种合并数据的场景下的python代码和VB代码,可以复制粘贴直接使用~~


场景一

很多个相同格式的Excel文件,每个文件的表头都是一样的,存放在不同的文件夹下,如下图所示,

1、Python代码:

# !/usr/bin/python

# coding=utf-8

import os

import pandas as pd

import glob


FileNum = 0

dirList = []

exList = []


def CollectExcelCase1(path):

global FileNum

# 读取所在目录下的文件名称,返回列表

files = os.listdir(path)

# 循环处理列表中每个文件

for f in files:

# 判断是否文件夹

if(os.path.isdir(path + '/' + f)):

# 排除隐藏文件夹,因为隐藏文件夹过多

if(f[0] == '.'):

pass

else:

# 添加非隐藏文件夹

dirList.append(f)

# 循环处理每个子文件夹

for dl in dirList:

# 取出每个子文件夹中的excel文件,返回列表

fileList = glob.glob(os.path.join(dl, "*.xlsx"))

# 循环每个excel文件

for fl in fileList:

# 读取excel文件中的内容,并加入到列表中

exList.append(pd.read_excel(fl, index_col=None))

# 统计处理的文件数

FileNum = FileNum + 1


# 将exlist进行纵向合并转换为DataFrame类型

df=pd.concat(exList,axis=0)

# 将结果写入到文件CollecttoExcel.xlsx中

df.to_excel("CollecttoExcel.xlsx",encoding='gb2312')


if __name__=='__main__':

CollectExcelCase1("./")

print('一共合并了',FileNum,"个Excel文件")


2、VB代码:

单独创建一个文件夹,并新建一个Excel启用宏的工作簿,如下图所示,我们将文件夹1-5中的excel文件内容合并到结果文件夹中的CollecttoExcelVB.xlsm中

打开excel文件,在开发工具中,点击Visual Basic,打开VB编程页面,在左侧右击插入,选择模块,将以下代码拷贝至右侧的编辑区域,点击运行子过程/用户窗体,运行宏程序,确认没问题,点击保存即可。

每次打开excel文件,可以在开发工具中点击宏,然后运行宏程序。

也可以添加一个按钮,在开发工具-插入中点击按钮,然后在弹出的对话框中指定刚才的宏,点击确定,即完成添加按钮。以后每次打开这个文件时,只要点击这个按钮,即可自动执行宏,进行合并数据。

VB代码如下:

Option Explicit


Sub CollectToExcel()

Dim mypath, myfld, myfile, m, j, wb, arr()

Sheet1.UsedRange.Offset(1, 0).ClearContents '清除汇总表里面的内容

mypath = ThisWorkbook.Path & "\" '获取当前文件所在的路径

myfld = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\" '获取当前文件所在路径的上一级路径

myfile = Dir(myfld, vbDirectory) '遍历上一级路径下的所有文件夹

'将所有文件夹路径存入数组arr中

Do While myfile <> "" '当返回值不为空时

If myfile <> "." And myfile <> ".." Then '当返回值不是"."(当前文件夹)或".."(上层文件夹)

If (GetAttr(myfld & myfile) And vbDirectory) = vbDirectory Then '如果得到的是文件夹

m = m + 1 '计算器

ReDim Preserve arr(m) '重定义数组arr

arr(m) = myfld & myfile & "\"

End If

End If

myfile = Dir '查找下一个文件夹

Loop '至此所有文件夹路径已放在数组arr中

'下面开始遍历每个文件夹中的excel文件

For j = 1 To m

myfile = Dir(arr(j) & "*.xlsx")

While myfile <> "" And myfile <> ThisWorkbook.Name '当每个文件夹中的EXCEL文件不为空,且不是当前的EXCEL文件时,执行下面操作

Set wb = CreateObject(arr(j) & myfile)

With wb.Sheets(1)

.UsedRange.Offset(1, 0).Copy Sheet1.Range("A" & Sheet1.[a1048576].End(xlUp).Row + 1) '将每个EXCEL文件的数据(第一行除外)拷贝至当前EXCEL文件

End With

wb.Close

myfile = Dir()

Wend

Next

Set wb = Nothing

'下面对当前的EXCEL文件进行格式统一

With Sheet1.Range("A1:Z65535").Font

.Name = "黑体"

.Size = 10

End With

End Sub


场景二

同一文件夹下,很多个相同格式的Excel文件,每个文件的表头都是一样的,如下图所示,

1、python代码实现:

#coding=utf-8

import os

import pandas as pd


excels = [

# 读取excel文件

pd.read_excel(fname)

# 循环读取默认路径下的excel文件,默认路径为与该程序文件相同的文件夹路径

for fname in os.listdir("./")

# 只读去excel文件

if ".xlsx" in fname

]

# 合并所有excel文件

df = pd.concat(excels)

# 将合并结果输出到CollecttoExcel.xlsx文件中

df.to_excel("CollecttoExcel.xlsx",index = False)


2、VB代码:

Option Explicit


Sub CollectToExcel()

Dim mypath, myfld, myfile, m, j, wb

Sheet1.UsedRange.Offset(1, 0).ClearContents '清除汇总表里面的内容

mypath = ThisWorkbook.Path & "\" '获取当前文件所在的路径

myfile = Dir(mypath & "\" & "*.xlsx") '从当前文件夹中获取所有要合并的表格

Do While myfile <> ""

'Set wb = Workbooks.Open(mypath & "\" & myfile) '打开遍历到的表格

While myfile <> "" And myfile <> ThisWorkbook.Name 'excel文件不为空,且不是当前的excel文件时,执行下面的操作

Set wb = CreateObject(mypath & myfile) '读取每个excel文件的内容

With wb.Sheets(1)

.UsedRange.Offset(1, 0).Copy Sheet1.Range("A" & Sheet1.[a1048576].End(xlUp).Row + 1) '将每个EXCEL文件的数据(第一行除外)拷贝至当前EXCEL文件

End With

wb.Close

myfile = Dir()

Wend

Loop

End Sub


场景三

同一个excel,有很多个相同格式的sheet文件,每个sheet的表头都是一样的,如下图所示,

1、Python代码:

#coding=utf-8

import os

import pandas as pd


# 读取excel文件内容,列表返回

files = pd.read_excel('./ExcelFile.xlsx',None)

# 获取excel文件中sheet的个数

sheets = list(files.keys())


fl = []

for i in sheets:

# 读取每个sheet的内容

sheet = files[i]

# 将读取的内容添加到结果中

fl.append(sheet)


# 将结果进行纵向合并转换为DataFrame类型

df = pd.concat(fl,axis=0)

# 将结果写入到文件CollecttoExcel.xlsx中

df.to_excel("CollecttoExcel.xlsx",index = False)


2、VB代码:

Option Explicit


Sub CollectToExcel()

Dim mypath, myfld, myfile, wb, j

Sheet1.UsedRange.Offset(1, 0).ClearContents '清除汇总表里面的内容

mypath = ThisWorkbook.Path & "\" '获取当前文件所在的路径

myfile = Dir(mypath & "\" & "*.xlsx") '从当前文件夹中获取所有要合并的表格

Do While myfile <> ""

Set wb = Workbooks.Open(mypath & "\" & myfile) '打开遍历到的表格

For j = 1 To wb.Sheets.Count '循环处理每个sheet

wb.Sheets(j).Range("a2", wb.Sheets(j).Cells.SpecialCells(xlCellTypeLastCell)).Copy '复制每个sheet的内容,从A2开始到已用区域最后一个单元格的范围全部复制

ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlValues '将复制的内容粘贴到当前表格中,从A列最后一个有数据的单元格后的空格开始粘贴

Next j

wb.Close (False) '复制粘贴完成后关闭被合并的表

myfile = Dir '继续遍历

Loop

End Sub


声明:本文来自微信公众号“土拨鼠的菜园地”(ID:gh_30a852e13a3a),系原创文章,如需转载,请注明出处。

原文链接:
https://mp.weixin.qq.com/s/0WCsdzXzr381NFxOrK_p1Q

相关推荐

Python自动化脚本应用与示例(python办公自动化脚本)

Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作...

Python文件操作常用库高级应用教程

本文是在前面《Python文件操作常用库使用教程》的基础上,进一步学习Python文件操作库的高级应用。一、高级文件系统监控1.1watchdog库-实时文件系统监控安装与基本使用:...

Python办公自动化系列篇之六:文件系统与操作系统任务

作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...

14《Python 办公自动化教程》os 模块操作文件与文件夹

在日常工作中,我们经常会和文件、文件夹打交道,比如将服务器上指定目录下文件进行归档,或将爬虫爬取的数据根据时间创建对应的文件夹/文件,如果这些还依靠手动来进行操作,无疑是费时费力的,这时候Pyt...

python中os模块详解(python os.path模块)

os模块是Python标准库中的一个模块,它提供了与操作系统交互的方法。使用os模块可以方便地执行许多常见的系统任务,如文件和目录操作、进程管理、环境变量管理等。下面是os模块中一些常用的函数和方法:...

21-Python-文件操作(python文件的操作步骤)

在Python中,文件操作是非常重要的一部分,它允许我们读取、写入和修改文件。下面将详细讲解Python文件操作的各个方面,并给出相应的示例。1-打开文件...

轻松玩转Python文件操作:移动、删除

哈喽,大家好,我是木头左!Python文件操作基础在处理计算机文件时,经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务,其中最常用的就是os模块和shutil模块。...

Python 初学者练习:删除文件和文件夹

在本教程中,你将学习如何在Python中删除文件和文件夹。使用os.remove()函数删除文件...

引人遐想,用 Python 获取你想要的“某个人”摄像头照片

仅用来学习,希望给你们有提供到学习上的作用。1.安装库需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。...

Python如何使用临时文件和目录(python目录下文件)

在某些项目中,有时候会有大量的临时数据,比如各种日志,这时候我们要做数据分析,并把最后的结果储存起来,这些大量的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件,存储这些临时数据。使用标...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

Python 开发工程师必会的 5 个系统命令操作库

当我们需要编写自动化脚本、部署工具、监控程序时,熟练操作系统命令几乎是必备技能。今天就来聊聊我在实际项目中高频使用的5个系统命令操作库,这些可都是能让你效率翻倍的"瑞士军刀"。一...

Python常用文件操作库使用详解(python文件操作选项)

Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...

11. 文件与IO操作(文件io和网络io)

本章深入探讨Go语言文件处理与IO操作的核心技术,结合高性能实践与安全规范,提供企业级解决方案。11.1文件读写11.1.1基础操作...

Python os模块的20个应用实例(python中 import os模块用法)

在Python中,...