在本文的介绍中
合并CSV文件有两种方法
一种是在cmd中输入copy *.CSV all.csv语句合并
但是这种方法容易在各个CSV文件编码不同等情况下导致生成的EXCEL文件全是乱码
所以有了作者要介绍的第二种方法
综合利用EXCEL软件和PyCharm(Python) 进行合并
以下为示例数据文件
下面介绍第一种方法
1.键盘输入win+R
2.在弹出的界面中输入cmd
3.在弹出的窗口中输入你保存所有CSV文件的文件夹路径
4.使用cd进入目标文件夹后输入 copy *.CSV all.csv 语句,将所有CSV文件复制到all.csv文件中
5.将all.csv文件打开之后虽然合并成功,但是会出现乱码
因此,在该方法不适用的情况下采用第二种方法,综合EXCEL和PyCharm(Python)
下面介绍第二种方法
1.在保存CSV文件的文件夹里新建一个EXCEL文件并打开
2.在空表格中同时按住alt+F11打开一个窗口
3.双击该窗口左侧的Sheet1,然后在打开的窗口中输入如下代码
Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
Dim xFd As FileDialog
Dim xSPath As String
Dim xCSVFile As String
Dim xWsheet As String
Application.DisplayAlerts = False
Application.StatusBar = True
xWsheet = ActiveWorkbook.Name
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Select a folder:"
If xFd.Show = -1 Then
xSPath = xFd.SelectedItems(1)
Else
Exit Sub
End If
If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
xCSVFile = Dir(xSPath & "*.csv")
Do While xCSVFile <> ""
Application.StatusBar = "Converting: " & xCSVFile
Workbooks.Open Filename:=xSPath & xCSVFile
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet).Activate
xCSVFile = Dir
Loop
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub
4.在该界面下点击运行(F5)开始将CSV文件转化为xls文件
在该步骤中,需要在弹出的窗口中选择存放CSV文件的文件夹,选择后EXCEL会弹出很多界面,请耐心等待,弹窗结束后即运行完成。
5.步骤4运行完成后的结果如图所示
可见该文件夹是xls文件与csv文件混合,没关系,python会出手
6.打开PyCharm建立一个python文件,输入如下代码
import tkinter as tk
from tkinter import filedialog
import os
import xlrd # 读取Excel文件的包
import xlsxwriter # 将文件写入Excel的包
# 打开excel
def OpenExcel(Filepath):
try:
file = xlrd.open_workbook(Filepath)
return file
except Exception as e:
print(e)
# 获取Excel中所有的sheet
def GetAllSheets(file):
return file.sheets()
# 获取某个sheet表的行数
def GetAllRows(table):
return table.nrows
# 读取文件内容
def GetContent(excel, sheetNo):
content = list()
try:
sheets = GetAllSheets(excel)
table = sheets[sheetNo]
except Exception as e:
print(e)
rows = GetAllRows(table)
for i in range(rows):
data = table.row_values(i) # 第i行的数据
content.append(data)
return content
# 所有的Excel的所有sheets变成一个sheet
def Sum1(fileName, data):
'''
将所有文件的sheet整合到一个sheet中
'''
finalFile = xlsxwriter.Workbook(fileName) # 创建一个工作表文件
sheet = finalFile.add_worksheet() # 添加一个sheet
count = 0
for sheetId in range(len(data)):
for row in range(len(data[sheetId])):
for col in range(len(data[sheetId][row])):
d = data[sheetId][row][col]
sheet.write(count, col, d)
count = count + 1
finalFile.close()
if __name__ == '__main__':
'''打开选择文件夹对话框'''
root = tk.Tk()
root.withdraw()
folderPath = filedialog.askdirectory() # 获得选择好的文件夹
# Filepath = filedialog.askopenfilename() #获得选择好的文件
data = list()
fileSet = os.listdir(folderPath)
for file in fileSet:
if file.endswith('.xls'):
try:
excel = OpenExcel(folderPath + '/' + file)
except Exception as e:
print(e)
sheets = GetAllSheets(excel)
for i in range(len(sheets)):
data.append(GetContent(excel, i))
fileName = str('/final.xlsx')
finalFilePath = folderPath + fileName
Sum1(finalFilePath, data)
7.运行,并选择存放csv文件和xls的文件夹,就可在文件夹中得到final.xlsx文件,即想要的文件
试试吧!祝你成功!