大数跨境
0
0

利用python高效合并当前目录下所有工作簿

利用python高效合并当前目录下所有工作簿 数据分析之渔
2021-02-03
1
导读:关注我们更多精彩等你发现!当遇到批量同格式的数据文件需要合并时,利用python合并能节省大量的时间,尤其是
关注我们
更多精彩等你发现!


当遇到批量同格式的数据文件需要合并时,利用python合并能节省大量的时间,尤其是结构数据表


如果利用excel vba代码合并,只有几十个表也需要几分钟,如果数据量很大那么会浪费很多时间,并且VBA的代码也不简洁(文末附上VBA的合并代码),下面就来对比一下两个方法的效果




VBA代码合并


操作步骤如下:

1、在需合并的工作目录下新建一个空白工作簿并打开



2、右键选择查看代码


3、粘贴代码,并选择运行中的“运行子过程/用户窗体”



4、合并完成的效果,需要手动去除重复的表头







python批量合并


python的合并代码只有几行

import csv
import os
import glob

csv_list = glob.glob('E:/春运/*.csv')
print('共发现{}个csv文件'.format(len(csv_list)))
print('处理中')
for i in csv_list:
frile = open(i,'rb').read()
with open('result.csv','ab')as f:
f.write(frile)
print('合并完毕')

运行结果:

共发现28个csv文件
处理中

合并完毕





下面附上VBA合并代码


VBA合并代码:
Sub 合并当前目录下所有工作簿的全部工作表()
Dim MyPath, MyName, AWbName
Dim Wb As Workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.csv")
AWbName = ActiveWorkbook.Name
Num = 0
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub




end

扫码关注最新动态

数据分析之渔



【声明】内容源于网络
0
0
数据分析之渔
大数据、商业数据分析、AI科技等资讯分享,联系作者请注明合作项
内容 69
粉丝 0
数据分析之渔 大数据、商业数据分析、AI科技等资讯分享,联系作者请注明合作项
总阅读21
粉丝0
内容69