在本文的介绍中

合并CSV文件有两种方法

一种是在cmd中输入copy *.CSV all.csv语句合并

但是这种方法容易在各个CSV文件编码不同等情况下导致生成的EXCEL文件全是乱码

所以有了作者要介绍的第二种方法

综合利用EXCEL软件和PyCharm(Python) 进行合并


以下为示例数据文件

csv输出乱码 java csv乱码怎么转成excel_CSV

  

csv输出乱码 java csv乱码怎么转成excel_开发语言_02


下面介绍第一种方法

1.键盘输入win+R

csv输出乱码 java csv乱码怎么转成excel_csv输出乱码 java_03

2.在弹出的界面中输入cmd

csv输出乱码 java csv乱码怎么转成excel_python_04

3.在弹出的窗口中输入你保存所有CSV文件的文件夹路径

csv输出乱码 java csv乱码怎么转成excel_CSV_05

csv输出乱码 java csv乱码怎么转成excel_python_06

4.使用cd进入目标文件夹后输入 copy *.CSV all.csv 语句,将所有CSV文件复制到all.csv文件中

csv输出乱码 java csv乱码怎么转成excel_开发语言_07

csv输出乱码 java csv乱码怎么转成excel_CSV_08

csv输出乱码 java csv乱码怎么转成excel_开发语言_09

5.将all.csv文件打开之后虽然合并成功,但是会出现乱码 

csv输出乱码 java csv乱码怎么转成excel_csv输出乱码 java_10

因此,在该方法不适用的情况下采用第二种方法,综合EXCEL和PyCharm(Python) 


下面介绍第二种方法

1.在保存CSV文件的文件夹里新建一个EXCEL文件并打开

csv输出乱码 java csv乱码怎么转成excel_开发语言_11

2.在空表格中同时按住alt+F11打开一个窗口

csv输出乱码 java csv乱码怎么转成excel_爬虫_12

 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会弹出很多界面,请耐心等待,弹窗结束后即运行完成。 

csv输出乱码 java csv乱码怎么转成excel_CSV_13

5.步骤4运行完成后的结果如图所示

可见该文件夹是xls文件与csv文件混合,没关系,python会出手 

csv输出乱码 java csv乱码怎么转成excel_python_14

 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文件,即想要的文件

试试吧!祝你成功!