excel文件的多个sheet表合并成一个csv文件并导入数据库

时间:2021-02-12 19:56:43

作者:WenWu_Both
出处:http://blog.csdn.net/wenwu_both/article/
版权:本文版权归作者和CSDN博客共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任

最近帮一个老师处理数据,结果他发给我的是一堆excel文件,而且每个excel文件又包含很多sheet表,所以想把这些sheet整合成一个csv文件,但excel的“另存为”只支持当前sheet的操作,如果一个个文件一个个sheet的操作过来,实在是费事,所以想到了调用excel的VBA,很轻松的完成了任务,怕后面遗忘了,所以记录一下:

(1)sheet表转成csv文件

VBA代码:

Sub SaveToCSVs()
Dim fDir As String
Dim wB As Workbook
Dim wS As Worksheet
Dim fPath As String
Dim sPath As String
fPath = "C:\Users\JiaoTong\Desktop\data\"
sPath = "D:\csvdata\"
fDir = Dir(fPath)
Do While (fDir <> "")
If Right(fDir, 4) = ".xls" Or Right(fDir, 5) = ".xlsx" Then
On Error Resume Next
Set wB = Workbooks.Open(fPath & fDir)
'MsgBox (wB.Name)
For Each wS In wB.Sheets
wS.Copy 'to a new workbook
wS.SaveAs sPath & wB.Name & ".csv", xlCSV
Next wS
wB.Close False
Set wB = Nothing
End If
fDir = Dir
On Error GoTo 0
Loop
End Sub

其中’fPath’为存放原始数据(excel文件)的路径
‘sPath’为存放生成数据(csv文件)的路径

excel文件的多个sheet表合并成一个csv文件并导入数据库

上述代码是将文件夹里所有excel文件的所有sheet表均转化成csv,如果有些sheet表不想导出,可以先选择好想要导出的sheet表,然后执行以下代码:

Option Explicit
Sub ExportSelectionToCSV()
Dim wks As Worksheet
Dim newWks As Worksheet
For Each wks In ActiveWindow.SelectedSheets
wks.Copy 'to a new workbook
Set newWks = ActiveSheet
With newWks
Application.DisplayAlerts = False
.Parent.SaveAs Filename:="D:\csvdata\" & .Name, _
FileFormat:=xlCSV
Application.DisplayAlerts = True
.Parent.Close savechanges:=False
End With
Next wks
End Sub

(2)多个csv文件合并

第一步将文件夹里的所有excel文件的所有sheet表均转化成了csv文件,下面我们将这些csv文件合并成一个csv文件。

运行cmd文件,切换到存放csv的文件夹,执行以下命令:

copy *.csv all_data.csv

即将文件夹里的所有csv文件合并成all_data.csv文件。

excel文件的多个sheet表合并成一个csv文件并导入数据库

(3)导入数据库

导入数据库我就不多讲了吧,选择合适的数据库执行导入即可(MySQL,Oracle,MongoDB等)

PS: 其实这个过程也可以编写Python脚本实现,有兴趣的可以试一下。