如何合并多个excel文件,并将合并后的文件的工作表名称更新为excel文件?

如何合并多个excel文件,并将合并后的文件的工作表名称更新为excel文件?

有人能帮我解决这个问题吗?这是我的要求:

我在文件夹 D:\Script\Test 中有几个 excel 文件(会有所不同)

文件的名称为 ExcelA、ExcelB、ExcelC 等

它有这样的工作表:A1(用于 ExcelA)、B1(用于 ExcelB)、C1(用于 ExcelC)等

在这里我想将所有这些不同的 excel 表合并到一个 excel 表中

(假设合并文件名为“Final.xlsx”)

条件:我不想获取工作表的实际名称 (A1、B1、C1),而是想用 Excel 文件名来更新它。

含义:Final.xlsx 应该合并 3 个工作表,名称分别为:ExcelA、ExcelB、ExcelC

答案1

  1. 以管理员身份运行 powershell / PowerShell ISE
  2. 运行以下命令,
    • Install-Module ImportExcel(并按照提示操作)
    • Import-Module ImportExcel
  3. 创建脚本(例如 MergeExcelWorkbooks.ps1)
    • 下面将帮助您合并来自多个工作簿的 1 个工作表,并且根据要求,合并工作簿Final.xlsx)工作表名称是源 Excel 文件的工作簿名称。

脚本:

$sourceFolderPath = "D:\Script\Test"

$OutputFilePath = "D:\Script\Test\Final.xlsx"

$XLfiles = Get-ChildItem $sourceFolderPath -Filter *.xlsx

foreach ($XLfile in $XLfiles) {

    <# Hints,
    - If there is only 1 sheet or if you want to import data from the 1st sheet (ordinal, i.e index 0) in the Excel file the below would work
    - Else please use the 'WorkSheetName' parameter to specify the sheet name to import from
    - Use the NoHeader switch of Import-Excel if the source Excel sheets do not contain a header; HeaderName parameter can be used in combination with NoHeader to specify a custom header name
    #>
    Import-Excel $XLfile.FullName | Export-Excel $OutputFilePath -WorksheetName $XLfile.BaseName    

}

在上面的脚本中,

  1. $XLfile.FullName返回源的完整文件路径$XLfile
  2. $XLfile.BaseName返回当前 excel 文件的名称(无扩展名)

请尝试一下,并在评论中告诉我它是否对你有用或者如果你有不同的情况。


编辑 为了从特定工作表导入,请使用以下命令-WorkSheetName参数,Import-Excel

Import-Excel $XLfile.FullName -WorksheetName 'Snapshots'| Export-Excel $OutputFilePath -WorksheetName $XLfile.BaseName

相关内容