有人能帮我解决这个问题吗?这是我的要求:
我在文件夹 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
- 以管理员身份运行 powershell / PowerShell ISE
- 运行以下命令,
Install-Module ImportExcel
(并按照提示操作)Import-Module ImportExcel
- 创建脚本(例如 MergeExcelWorkbooks.ps1)
- 下面将帮助您合并来自多个工作簿的 1 个工作表,并且根据要求,合并工作簿(
Final.xlsx
)工作表名称是源 Excel 文件的工作簿名称。
- 下面将帮助您合并来自多个工作簿的 1 个工作表,并且根据要求,合并工作簿(
脚本:
$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
}
在上面的脚本中,
$XLfile.FullName
返回源的完整文件路径$XLfile
$XLfile.BaseName
返回当前 excel 文件的名称(无扩展名)
请尝试一下,并在评论中告诉我它是否对你有用或者如果你有不同的情况。
编辑
为了从特定工作表导入,请使用以下命令-WorkSheetName
参数,Import-Excel
Import-Excel $XLfile.FullName -WorksheetName 'Snapshots'| Export-Excel $OutputFilePath -WorksheetName $XLfile.BaseName