如何在同一个Excel工作簿中将两个不同的CSV文件转换为两个工作表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在同一个Excel工作簿中将两个不同的CSV文件转换为两个工作表?相关的知识,希望对你有一定的参考价值。

我有一个解决方案,将csv数据复制到Excel工作表,但它只适用于1个CSV文件到1个Excel工作表。如何在Excel中将多个CSV文件传输到多个工作表?

这是我的代码:

Dim oExcel  
Set oExcel = CreateObject("Excel.Application")  
With oExcel  
    .DefaultSaveFormat=51  
    .Workbooks.Open sourceFile  
    .Sheets(1).Columns("A").TextToColumns .Range("A1"), , , , , True  
    .Sheets.add
    .ActiveWorkbook.SaveAs outputFile, 51  
    .Quit  
End With    
答案

你实际上不需要使用TextToColumns。对于第一个CSV文件,工作表已经存在,对于第二个文件,您可以将文件作为另一个工作簿打开,然后使用Worksheet.Copy方法在第一个工作簿之后复制工作表。

你去:

Const xlWorkbookDefault = 51

Dim sourceFile1, sourceFile2, outputFile
Dim xlApp, xlWorkbook1, xlWorkbook2

sourceFile1 = "...\CSV1.csv"
sourceFile2 = "...\CSV2.csv"
outputFile = "...\output.xlsx"

Set xlApp = CreateObject("Excel.Application")
With xlApp
    Set xlWorkbook1 = .Workbooks.Open(sourceFile1)
    Set xlWorkbook2 = .Workbooks.Open(sourceFile2)
    xlWorkbook2.Sheets(1).Copy , xlWorkbook1.Sheets(1)
    xlWorkbook2.Close
    .xlWorkbook1.SaveAs outputFile, xlWorkbookDefault
    .Quit  
End With

为了使其更通用,您可以调整以前的代码以使用任意数量的CSV文件:

Const xlWorkbookDefault = 51

Dim sourceFiles(5)
Dim outputFile
Dim xlApp, xlWorkbook1, xlWorkbook2

sourceFiles(0) = "...\CSV1.csv"
sourceFiles(1) = "...\CSV2.csv"
sourceFiles(2) = '...
' TODO: Add more files.
outputFile = "...\output.xlsx"

Set xlApp = CreateObject("Excel.Application")
With xlApp
    Set xlWorkbook1 = .Workbooks.Open(sourceFiles(0))
    For i = 1 To UBound(sourceFiles)
        Set xlWorkbook2 = .Workbooks.Open(sourceFiles(i))
        xlWorkbook2.Sheets(1).Copy , xlWorkbook1.Sheets(i)
        xlWorkbook2.Close
    Next
    .xlWorkbook1.SaveAs outputFile, xlWorkbookDefault
    .Quit  
End With

以上是关于如何在同一个Excel工作簿中将两个不同的CSV文件转换为两个工作表?的主要内容,如果未能解决你的问题,请参考以下文章

用C语言写CSV文件,如何写出多个工作表?

将 Excel 工作簿中的所有工作表转换为 csv 格式

excel跨表格引用遇到的两个问题?

python:创建excel工作簿并将csv文件转储为工作表

如何通过在 Python 中将两个列表合并为一个,使用 CSV 模块或 Pandas 写入 csv 或 Excel 文件?

将 CSV 文件的内容复制到现有工作簿,然后移动 CSV