我有一个小脚本,允许我将多个 .csv 合并到一个 .xlsx:
$path = "C:\Users\FrancescoM\Desktop\CSV\Results\*"
$csvs = Get-ChildItem $path -Include *.csv
$y = $csvs.Count
Write-Host "Detected the following CSV files: ($y)"
Write-Host " "$csvs.Name"`n"
$outputfilename = "Final Registry Results"
Write-Host Creating: $outputfilename
$excelapp = New-Object -ComObject Excel.Application
$excelapp.SheetsInNewWorkbook = $csvs.Count
$xlsx = $excelapp.Workbooks.Add()
for ($i=1; $i -le $y; $i++) {
$worksheet = $xlsx.Worksheets.Item($i)
$worksheet.Name = $csvs[$i-1].Name
$file = (Import-Csv $csvs[$i-1].FullName)
$file | ConvertTo-Csv -Delimiter "`t" -NoTypeInformation | Clip
$worksheet.Cells.Item(1).PasteSpecial() | Out-Null
}
$output = "Results.xlsx"
$xlsx.SaveAs($output)
$excelapp.Quit()
如果我运行它一次它可以完美运行并创建我的“Results.xlsx”文件。
但是,如果我随后删除“Results.xlsx”文件并再次运行代码,则会收到此错误:
此位置已存在名为“Results.xlsx”的文件。你想更换它吗?
但很明显,该文件不再存在。我相信我Excel.Application
以错误的方式关闭。如何正确关闭?