合并Excel或csv的几种方法:批处理/插件/Power Query/VBA/Python

您所在的位置:网站首页 批量合并所有sheet的内容 合并Excel或csv的几种方法:批处理/插件/Power Query/VBA/Python

合并Excel或csv的几种方法:批处理/插件/Power Query/VBA/Python

2024-04-16 16:36| 来源: 网络整理| 查看: 265

工作场景经常有合并Excel或者csv文件的需求,这里汇总常用的几种方法:

批处理适用性:txt或csv 纯文本文件优点:简单快捷缺点:仅适用于纯文本文件,不支持复杂的配置

步骤:

a. 将所有待合并的文件放到同一个文件夹,确保该文件夹只有这些待合并的文件;

b. 新建txt文档,输入:

copy *.csv merged.csv ::合并csv用这个 copy *.txt merged.txt ::合并txt用这个

如此简单的命令也易于理解,即把当前路径下任何名称的txt或者csv写入到新的名为merged的txt或者csv文件中,其中merged文件名可以自定义。

c. 将该txt文档更改文件格式/后缀为.bat,双击运行。

Excel加载项(Add-in)/插件适用性:Excel支持的文件优点:集成的功能按钮,好用易懂缺点:需额外下载或安装,一些插件需额外许可

有市场上成熟的各类Excel办公插件,也有小型的合并工作簿或工作表的加载项,其使用的步骤各不相同。以下列举一些,感兴趣的可以自行了解:

慧办公:慧办公官网 (hbg666.com)方方格子:Excel工具箱 插件-方方格子 工作室-做最专业的Excel工具箱 (ffcell.com)如果使用WPS,会员功能中WPS智能工具箱也可以实现合并文件操作。Power Query适用性:各种文件类型,包括不限于Excel/Text/CSV/XML/JSON/文件夹,也可连接数据库等优点:用户友好的数据分析工具,支持各类型文件,可直接进行数据清洗或后续可视化(利用Power BI)缺点:略为复杂,需熟悉Excel,低版本Excel(Excel 2013及以下)需额外安装

主要步骤包括获取和连接数据、导入和清洗数据、完成合并等,这方面的教程和资源都很丰富,在此不赘述,详请参见下方References and Resources。

VBA(Visual Basic for Applications)适用性:Excel支持的文件优点:仅需利用Excel开发工具缺点:较为复杂,需熟悉Excel,并了解基本编程语句

主要步骤*:

a. 在Excel菜单栏中,点击开发工具,打开VBA;

b. 输入代码后运行:

Sub 合并目录所有工作簿全部工作表() Dim MP, MN, AW, Wbn, wn Dim Wb As Workbook Dim i, a, b, d, c, e Application.ScreenUpdating = False MP = ActiveWorkbook.Path MN = Dir(MP & "\" & "*.xls") AW = ActiveWorkbook.Name Num = 0 e = 1 Do While MN "" If MN AW Then Set Wb = Workbooks.Open(MP & "\" & MN) a = a + 1 With Workbooks(1).ActiveSheet For i = 1 To Sheets.Count If Sheets(i).Range("a1") "" Then Wb.Sheets(i).Range("a1").Resize(1, Sheets(i).UsedRange.Columns.Count).Copy .Cells(1, 1) d = Wb.Sheets(i).UsedRange.Columns.Count c = Wb.Sheets(i).UsedRange.Rows.Count - 1 wn = Wb.Sheets(i).Name .Cells(1, d + 1) = "表名" .Cells(e + 1, d + 1).Resize(c, 1) = MN & wn e = e + c Wb.Sheets(i).Range("a2").Resize(c,d).Copy .Cells(.Range("a1048576").End(xlUp).Row + 1, 1) End If Next Wbn = Wbn & Chr(13) & Wb.Name Wb.Close False End With End If MN = Dir Loop Range("a1").Select Application.ScreenUpdating = True MsgBox "共合并了" & a & "个工作薄下全部工作表。如下:" & Chr(13) & Wbn, vbInformation, "提示" End Sub

*详细过程可参见下方References and Resources

Python适用性:各种文件类型优点:强大,可以很简单,也可以进行复杂的配置缺点:需安装Python环境和对应的包(Package),并掌握Python基本语法

使用Python有不同的实现方式,这里概述其中较为简单的一种:

主要步骤*:

a. 根据需要导入相关的包/模块,代码如下:

import pandas as pd #(必需)强大的数据分析模块 import os #os模块与操作系统进行交互,处理文件和目录 import numpy as np #numpy库用于多维数组计算 import re #re模块匹配字符串,理解正则表达式

b. 基本参数设置

Folder_Path = r'C:\foldername' #要合并的文件夹及其完整路径 SaveFile_Path = r'C:\foldername' #合并后要保存的文件路径 SaveFile_Name = r'merged.csv' #合并后要保存的文件名 os.chdir(Folder_Path) #修改当前工作目录 file_list = os.listdir() #将该文件夹下的所有文件名存入一个列表

c-1. 读取和追加写入(适用于csv)

#读取第一个CSV文件并包含表头,编码默认UTF-8 df = pd.read_csv(Folder_Path +'\\'+ file_list[0]) #将读取的第一个CSV文件写入合并后的文件保存 df.to_csv(SaveFile_Path+'\\'+ SaveFile_Name,encoding="UTF-8",index=False) #循环遍历列表中各个CSV文件名,并追加到合并后的文件 for i in range(1,len(file_list)): df = pd.read_csv(Folder_Path + '\\'+ file_list[i]) df.to_csv(SaveFile_Path+'\\'+SaveFile_Name,encoding="UTF-8",index=False, header=False, mode='a+')

c-2. concat方法(适用于excel和csv)

#建立空的列表,用于存储待合并的文件 new_list = [] #遍历目标文件夹中的所有待合并文件,读取并加入到列表中 for file in file_list: file_path = os.path.join(Folder_Path,file) dataframe = pd.read_excel(file_path) new_list.append(dataframe) #把列表中的DataFrame合并 df = pd.concat(new_list) #输出到要保存的路径和文件 df.to_excel(SaveFile_Path+'\\'+SaveFile_Name,index=False)

*上述步骤涉及的详细过程可参见下方References and Resources。

*Pandas具体的合并代码及其参数将在另一篇文章中介绍,关于Excel和csv的读取和写入参详细介绍见:

References and Resources:

Power Query - 概述和学习 - Excel (microsoft.com)Me烨烨:BI系列之Power Query实现多表合并如何快速的合并多个 Excel 工作簿成为一个工作簿? - 知乎 (zhihu.com)Powerquery多表合并案例:一键完成多个sheet合并-部落窝教育 (itblw.com)Excel用VBA代码一键合并汇总多个工作簿,省时省力必学! (baidu.com)利用 Python 进行多 Sheet 表合并、多工作簿合并、一表按列拆分_pdcfighting的博客-CSDN博客_python 合并工作簿使用python一分钟完成Excel数据由多个文件合并为一个文件(pandas)_ccplus的博客-CSDN博客Python合并(拼接)多个CSV文件_kerwin的博客-CSDN博客_python合并csv

Author: Seldon He

Updated on: 2021/02/15本文采用BY-NC-SA许可协议,转载请注明出处。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3