Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Import von csv zu xlsx geht sehr langsam.

$
0
0

Ich bekomme hier ständig ein 

The request is blocked.

07LulYwAAAAB9lvE7d/1JSYWz88EfrjsFQkVSMzBFREdFMDQwNwA0ZjkwZmU2OS02MjdhLTQwZTEtYjA3My1lNGVhZDVkOGU2NTg=

und kann den code nicht reinstellen.


Hallo zusammen,

ich versuche hier aus einer csv daten in eine bestehende xlsx Datei zu importieren, leider geht dies nur sehr langsam.

Könnte mir ggf. jemand einen tipp geben wie ich das beschleunigen kann, denn es handelt sich um ca. 5000 Datensätze.

Ich habe es versucht mit ca. 70 Datensätze und das dauet ca. 3-4 Minuten, dies ist einfach zu langsam.

Es gibt bestimmt noch einen  besseren weg, als den ich hier gecoded habe, oder?

$csvFile = Get-Content -path"$TempPath\$TempCSVFileName"
$Excel = new-object -comobject Excel.application
$Excel.visible =$false
$Excel.DisplayAlerts =$false
$WorkBook = $Excel.WorkBooks.open($ResultFile)
ForEach ($WorkSheetin$WorkBook.WorkSheets) {
     If ($WorkSheet.Name -like'Import') {
       $Sheet = $WorkSheet
       break
     } # End If
} # end ForEach
$Spalte = 1
$Zeile = 2
$Counter = 0
foreach ($CSVdatain$csvFile){
    if (!($CSVdata -eq'') -and (!($CSVdata -like'"Anrede";"Name";"Vorname";"Firma";"Strasse";"HSNr";"PLZ";"Ort";"Geboren"'))){
        $VARAnrede      = ($CSVdata -split';')[0] -replace'"',''
        $VARName        = ($CSVdata -split';')[1] -replace'"',''
        $VARVorname     = ($CSVdata -split';')[2] -replace'"',''
        $VARFirma       = ($CSVdata -split';')[3] -replace'"',''
        $VARStrasse     = ($CSVdata -split';')[4] -replace'"',''
        $VARHausNr      = ($CSVdata -split';')[5] -replace'"',''
        $VARPLZ         = ($CSVdata -split';')[6] -replace'"',''
        $VAROrt         = ($CSVdata -split';')[7] -replace'"',''
        $VARGeburtsdatum = ($CSVdata -split';')[8] -replace'"',''
        $Counter+=1
        if (!($counter -gt0)){
            write-host"Datensatz 1 von $($csvFile.count-1) eingefügt" -ForegroundColor Green
        }else{
            write-host"Datensatz $Counter von$($csvFile.count-1) eingefügt" -ForegroundColor Green
        }
    }
    $Sheet.Cells.Item($Zeile,1).value2 = $VARAnrede
    $Sheet.Cells.Item($Zeile,2).value2 = $VARName
    $Sheet.Cells.Item($Zeile,3).value2 = $VARVorname
    $Sheet.Cells.Item($Zeile,4).value2 = $VARFirma
    $Sheet.Cells.Item($Zeile,5).value2 = $VARStrasse
    $Sheet.Cells.Item($Zeile,6).value2 = $VARHausNr
    $Sheet.Cells.Item($Zeile,7).value2 = $VARPLZ
    $Sheet.Cells.Item($Zeile,8).value2 = $VAROrt
    $Sheet.Cells.Item($Zeile,9).value2 = $VARGeburtsdatum
    $Zeile+= 1
}
#$WorkBook.Save()
$WorkBook.SaveAs($ResultFile,51)
$WorkBook.Saved =$true
$WorkBook.Close()
$excel.Quit();
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) |Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

Komisch so ging es mit dem Code.

Gruss

Markus






Viewing all articles
Browse latest Browse all 2314