Fusionner plusieurs CSV dans un XLSX à l'aide de officeopenxml et EpPlus

Bonjour, j'essaie de combiner quelques files CSV du même catalogue en un XLSX, mais j'ai quelques erreurs. Pourriez-vous examiner cela? Je reçois des erreurs COM lors de l'utilisation d'Excel.Application et beaucoup d'autres erreurs lors de l'utilisation de OfficeOpenXML.Excelpackage

New-Object : Resortingeving the COM class factory for component with CLSID {00000000-0000-0000-0000-000000000000} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). At D:\Atos.PL.Scripts\AD_User_Review_Report\test3.ps1:17 char:13 + $excelapp = New-Object -comobject Excel.Application + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand Property 'sheetsInNewWorkbook' cannot be found on this object; make sure it exists and is settable. At D:\Atos.PL.Scripts\AD_User_Review_Report\test3.ps1:18 char:1 + $excelapp.sheetsInNewWorkbook = $csvs.Count + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound 

Lorsque vous utilisez OfficeOpenXML, il n'y a pas d'erreur COM.

  #-----------------------------------------------------------------------------------------------------------# # MERGE REPORTS INTO ONE XLSX #-----------------------------------------------------------------------------------------------------------# Import-module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Modules\EPPlus\EPPLus.dll -Verbose cd $PSScriptRoot\; $csvs = Get-ChildItem .\* -Include *.csv $y=$csvs.Count Write-Host "Detected the following CSV files: ($y)" foreach ($csv in $csvs) { Write-Host " "$csv.Name } $outputfilename = $(get-date -f yyyyMMdd) + "_" + "Report.xlsx" Write-Host Creating: $outputfilename $excelapp = New-Object OfficeOpenXml.ExcelPackage $excelapp.sheetsInNewWorkbook = $csvs.Count $xlsx = $excelapp.Workbooks.Add() $sheet=1 foreach ($csv in $csvs) { $row=1 $column=1 $worksheet = $xlsx.Worksheets.Item($sheet) $worksheet.Name = $csv.Name $file = (Get-Content $csv) foreach($line in $file) { $linecontents=$line -split ',(?!\s*\w+")' foreach($cell in $linecontents) { $worksheet.Cells.Item($row,$column) = $cell $column++ } $column=1 $row++ } $sheet++ } $output = $PSScriptRoot + "\" + $outputfilename $xlsx.SaveAs($output) $excelapp.quit() #cd \ #returns to drive root