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

Werte zweier Spalten aus 2 verschiedenen .xls Dateien vergleichen

$
0
0

Hallo zusammen!

Ich habe zwei .xls Dateien mit jeweils einer Kostenaufstellung für genutzten Speicherplatz. Jetzt muss ich ein Skript schreiben, das die Werte der Spalten "Speicherplatz" beider .xls Dateien miteinander vergleicht, und bei einer Abweichung von (Hausnummer) 10% die betroffenen Zeilen in einer csv, html oder xls Datei ausgibt.

Bis jetzt habe ich folgendes:

#*=============================================================================
#* Open first Excel File and read from relevant sheet
#*=============================================================================

$XLSDoc = "I:\ISS\RanM\2013_Q2_Kostenaufteilung_ISS-Server.xlsm" 
$SheetName = "nach TSM-Storage"
$Excel = New-Object -ComObject "Excel.Application"

$Workbook = $Excel.Workbooks.open($XLSDoc) 
$Sheet = $Workbook.Worksheets.Item($SheetName) 
$Sheet.Activate()


#*=============================================================================
#* Open second Excel File and read from relevant sheets
#*=============================================================================

$XLSDoc1 = "I:\ISS\RanM\CeBrA-Cloud_Server_2.3.xlsx" 
$SheetName1 = "Abrechnung INTERN 2.3"
$Excel1 = New-Object -ComObject "Excel.Application"

$Workbook1 = $Excel1.Workbooks.open($XLSDoc1)
$Sheet1 = $Workbook1.Worksheets.Item($SheetName1)
$Sheet1.Activate()

Soweit funktioniert alles prima. Ich kann auf jede beliebige Zelle zugreifen und mir den Inhalt auf der Konsole ausgeben lassen. Zum Testen habe ich eine Funktion geschrieben, die alle Zeilen ausgibt, bei denen der Wert der Spalte x grösser ist als der vom User eingegebene Parameter. Das muss noch angepasst werden, sodass er die Werte mit der der anderen xls Datei vergleicht. Hier brauche ich Hilfe.

#*=============================================================================
#* Purpose: Selects all relevant columns for comparison
#*
#*=============================================================================

#TODO: pipe this output into the html function

Function SelectColumns ($thresh) {
$row = 5
$col = 3

    While($Sheet.Cells.Item($row, $col).Value() -ne $null){

    if($Sheet.Cells.Item($row, $col).Value() -gt $thresh){
        Write-Host $Sheet.Cells.Item($row, $col-2).Value(), $Sheet.Cells.Item($row, $col).Value()
        }
    $row +=1   
    }
}

Nun soll das Ergebnis dieser Funktion (die selektierten Zeilen mit einer Abweichung von über 10% oder was auch immer) in einer html (oder anderes Format) Datei ausgegeben werden. Das habe ich so gelöst:

Function makeHTML{
    $xlHtml = 44
    $missing = [type]::Missing

    $Workbook.SaveAs('H:\Documents\PowerShell\kostenvergleich.html',$xlHtml,$missing,$missing,$missing,$missing,$missing,$missing,$missing,$missing,$missing,$missing) #| Where-Object -EQ $selection
    
}

Funktioniert auf Ebene des gesamten Worksheets super. Aber ich will ja nur meine Ergebnisse exportieren. Die beiden Funktionen mit der Pipe zu verketten hat nicht geklappt. Ich weiss, dass es die $input Variable gibt aber weiss nicht recht damit umzugehen.

Hat jemand eine Idee?

schon mal vielen Dank im Voraus

lg

tchintchie

PS: ich bin absoluter Powershell-Anfänger also bitte Geduld mit mir :-)


Viewing all articles
Browse latest Browse all 2314