У меня есть небольшой скрипт, который позволяет мне объединить несколько .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
в неправильном направлении. Как правильно закрыть?