diklabu_bbszeugnis.psm1
<# #> function Connect-BbsZeugnis { [CmdletBinding()] Param ( # Hilfebeschreibung zu Param1 [Parameter(Position=0)] [String]$location, [String]$user_id="SCHULE", [String]$passwort="" ) Begin { if (-not $location) { if ($Global:logins["bbszeugnis"]) { $location=$Global:logins["bbszeugnis"].location; } else { Write-Error "Bitte location angeben!" break; } } $global:connectionz = new-object System.Data.OleDb.OleDbConnection try{ $global:connectionz.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$location\zeugnis_XP.mdb; Jet OLEDB:System Database=$location\System.mdw;User ID=$user_ID;Password=$user_password;" $global:connectionz.Open() Write-Verbose "Okay, db geöffnet" Write-Verbose "Lese Notenbezeichnungen" $global:grades = Get-BZGrades Write-Verbose "Lese AVSZ Bezeichnungen" $global:avsv = Get-BZAvSv Write-Verbose "Lese Vermerke" $global:annotations = Get-BZAnnotations Write-Verbose "Lese Bemerkungen" $global:remarks = Get-BZRemarks Write-Verbose "Lese Durchschnittsnoten" $global:dnote = Get-BZAverageGrades $global:connectionz } catch { Write-Error "Fehler beim Öffnen von BBS-Zeugnis $($_.ErrorDetails.Message)" $_ throw "Failed to Connect to BBS Zeugnis" } Set-Keystore -key "bbszeugnis" -server $location } } <# .Synopsis Liest die Zeuignisdaten eines Schülers .DESCRIPTION Liest die Zeuignisdaten eines Schülers .EXAMPLE Get-BZGrade -NR_SCHÜLER 13 Liest die Zeugnisdaten des Schülers mit der NR 13 .EXAMPLE Get-BZGrade -NR_SCHÜLER 12,13 Liest die Zeugnisdaten des Schüler mit den NR 12 und 13 .EXAMPLE 12,13 | Get-BZGrade Liest die Zeugnisdaten des Schüler mit den NR 12 und 13 .EXAMPLE Get-BZGrade -KNAME FML2- Liest die Zeugnisdaten der Schüler der Klasse FML2- .EXAMPLE Get-BZGrade -KNAME FML2-,FML1- Liest die Zeugnisdaten der Schüler der Klassen FML2- und FML1- .EXAMPLE "FML2-","FML1-" | Get-BZGrade Liest die Zeugnisdaten der Schüler der Klassen FML2- und FML1- .EXAMPLE Import-Excel C:\Users\jtutt\Documents\NetBeansProjects\diklabu\Diklabu\PowerShell\Zeugnisschreibung\export.xlsx | Get-BZGrade Liest die Zeugnisdaten aus der Excel Tabelle #> function Get-BZGrade { [CmdletBinding()] Param ( # NR_SCHÜLER [Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=0,ParameterSetName='byID')] [int[]]$NR_SCHÜLER, # K_NAME [Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=0,ParameterSetName='byKNAME')] [String[]]$KNAME, # Zeugnisdatum [Parameter(ValueFromPipelineByPropertyName=$true)] [DateTime]$Zeugnisdatum, # Zeugnisart [Parameter(ValueFromPipelineByPropertyName=$true)] [String]$Zeugnisart ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } Process { if ($NR_SCHÜLER) { $obj=$NR_SCHÜLER } else { $obj=$KNAME } $obj | ForEach-Object { $command = $global:connectionz.CreateCommand() if ($NR_SCHÜLER) { $command.CommandText = "Select * From SQL_NOTE where NR_SCHÜLER=$_" } else { $command.CommandText = "Select * From SQL_NOTE where KL_NAME='$_'" } $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) $schueler=@(); foreach ($item in $dataset.Tables[0]) { #$item $sch="" | Select-Object -Property "NR_SCHÜLER","NNAME","VNAME","Abschluss_Vorbildung","KL_NAME" $sch.NR_SCHÜLER=$item.NR_SCHÜLER $sch.NNAME=$item.NNAME; $sch.VNAME=$item.VNAME; #$sch.GEBDAT=$item.GEBDAT; $sch.KL_NAME=$item.KL_NAME; #$sch.BILDUNGSGANG=$item.TAKLSTORG; $sch.Abschluss_Vorbildung=$item.ABSCHLUSS; foreach ($property in $item.PSObject.Properties) { #Write-Host "Teste $($property.Name) mit $($property.Value)" if ($property.Name -match "FACH" -and $([String]$property.Value).Length -ne 0 -and $property.Name -notmatch "FACHLANG") { $num=$property.Name.Substring(4); $sch | Add-Member -MemberType NoteProperty -Name ($property.NAME) -Value $property.VALUE $sch | Add-Member -MemberType NoteProperty -Name ("NSCHL"+$num) -Value $item["NSCHL"+$num] } if ($property.Name -match "BEM" ) { $numb=$property.Name.Substring(3); $sch | Add-Member -MemberType NoteProperty -Name $property.NAME -Value $item["BSCHL"+$numb]; } if ($property.Name -match "VERM" ) { $numv=$property.Name.Substring(4); $sch | Add-Member -MemberType NoteProperty -Name $property.NAME -Value $item["VSCHL"+$numv]; } } $sch | Add-Member -MemberType NoteProperty -Name "Arbeitsverhalten" -Value $item.ASV; $sch | Add-Member -MemberType NoteProperty -Name "Sozialverhalten" -Value $item.SZV; $sch | Add-Member -MemberType NoteProperty -Name "Fehltage_Gesamt" -Value $item.FTG; $sch | Add-Member -MemberType NoteProperty -Name "Fehltage_Entschuldigt" -Value $item.FTE; $sch | Add-Member -MemberType NoteProperty -Name "Abschluss" -Value $item.ENTLABSCHLUSS; $sch | Add-Member -MemberType NoteProperty -Name "Durchschnittnote" -Value $item.NOTE; if ($Zeugnisart) { $sch | Add-Member -MemberType NoteProperty -Name "Zeugnisart" -Value $Zeugnisart; } else { $sch | Add-Member -MemberType NoteProperty -Name "Zeugnisart" -Value $item.ZART; } if ($Zeugnisdatum) { $sch | Add-Member -MemberType NoteProperty -Name "Zeugnisdatum" -Value $Zeugnisdatum } else { $sch | Add-Member -MemberType NoteProperty -Name "Zeugnisdatum" -Value $item.DATUM; } $schueler+=$sch; } $schueler; } } } <# .Synopsis Liest die Notenbezeichnungen aus .DESCRIPTION Liest die Notenbezeichnungen aus .EXAMPLE Get-BZGrades #> function Get-BZGrades { [CmdletBinding()] Param ( ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } else { $command = $global:connectionz.CreateCommand() $command.CommandText = "Select * From SQL_Z_SCHL" $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) $obj=@{} foreach ($item in $dataset.Tables[0]) { Write-Verbose "Schlüssel $($item.SCHL) ist $($item.TEXT)"; $obj[""+$item.SCHL]=$item.TEXT } $obj } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } } <# .Synopsis Liest die AVSV aus .DESCRIPTION Liest die AVSV aus .EXAMPLE Get-BZAvSv #> function Get-BZAvSv { [CmdletBinding()] Param ( ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnisn eine Verbindung aufbauen" return; } else { $command = $global:connectionz.CreateCommand() $command.CommandText = "Select * From SQL_Z_SZV" $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) $obj=@{} foreach ($item in $dataset.Tables[0]) { #$item $obj[""+[String]$item.SZV]=$item.TEXT } $obj } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } } <# .Synopsis Liest die Vermerke aus .DESCRIPTION Liest die Vermerke aus .EXAMPLE Get-BZAvSv #> function Get-BZAnnotations { [CmdletBinding()] Param ( ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } else { $command = $global:connectionz.CreateCommand() $command.CommandText = "Select * From SQL_Z_VERM" $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) $obj=@{} foreach ($item in $dataset.Tables[0]) { $obj[""+$([String]$item.VERM).Replace(".",",")]=$item.TEXT } $obj } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } } <# .Synopsis Liest die Durchschnittsnoten aus .DESCRIPTION Liest die Durchschnittsnoten aus .EXAMPLE Get-BZAverageGrades #> function Get-BZAverageGrades { [CmdletBinding()] Param ( ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } else { $command = $global:connectionz.CreateCommand() $command.CommandText = "Select * From SQL_Z_DN" $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) $obj=@{} foreach ($item in $dataset.Tables[0]) { $obj[""+[String]$item.DN]=$item.DNTEXT } $obj } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } } <# .Synopsis Liest die Bemerkungen aus .DESCRIPTION Liest die Bemerkungen aus .EXAMPLE Get-BZAvSv #> function Get-BZRemarks { [CmdletBinding()] Param ( ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } else { $command = $global:connectionz.CreateCommand() $command.CommandText = "Select * From SQL_Z_BEM" $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) $obj=@{} foreach ($item in $dataset.Tables[0]) { $obj[""+$([String]$item.BEM).Replace(".",",")]=$item.TEXT } $obj; } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } } <# .Synopsis Setzt die Zeugnisdaten eines Schülers .DESCRIPTION Setzt die Zeugnisdaten eines Schülers .EXAMPLE Set-BZGrade -NR_SCHÜLER 13 -FACH1 2 -FACH2 3 -BEM1 700 -VERM1 3.2.1 Setzt die Zeugnisdaten des Schülers mit der NR 13 .EXAMPLE import-Excel FIAE15G.xls | Set-BZGrade Setzt die Zeugnisdaten aus der XLSX Datei #> function Set-BZGrade { [CmdletBinding()] Param ( # Zeugnisobjekt [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)] $zeugnisObj, [String]$Zeugnisart, [DateTime]$Zeugnisdatum ) Begin { if ($global:connectionz) { if ($global:connectionz.State -ne "Open") { Write-Error "Verbindung zu BBS Zeugnis ist nicht geöffnet, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } } else { Write-Error "Es existiert noch keine Verbindung zu BBS Zeugnis, evtl. zunächst mit Connect-BBSZeugnis eine Verbindung aufbauen" return; } $outObj = "" | Select-Object -Property "NR_SCHÜLER","success","msg","warnings","Warning_msg" } Process { Write-Verbose "SET Schüler Nr=$($zeugnisObj.NR_SCHÜLER) "; #Write-Host "vermerk=$VERM1" $command = $global:connectionz.CreateCommand() $outObj.NR_SCHÜLER=$zeugnisObj.NR_SCHÜLER; $outObj.success=$true $outObj.msg="Daten des Schülers $($zeugnisObj.VNAME) $($zeugnisObj.NNAME) Klasse $($zeugnisObj.KL_NAME) erfolgreich importiert!" $outObj.warnings=$false; $outObj.Warning_msg=""; $tst = Get-BZGrade -NR_SCHÜLER $zeugnisObj.NR_SCHÜLER; if (-not $tst) { $outObj.success=$false $outObj.msg="Kann NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) nicht finden" $outObj return; } $sql = "Update SQL_NOTE SET " $attributes = @() $num=1; for ($num=1;$num -le 30;$num++) { if(Get-Member -inputobject $zeugnisObj -name ("NSCHL$num") -Membertype Properties ){ if ([String]$zeugnisObj."NSCHL$num" -ne "") { if ($($Global:grades[[String]$zeugnisObj."NSCHL$num"])) { $attributes+="NSCHL$num = $($zeugnisObj."NSCHL$num"), NOTE$num = '$($Global:grades[[String]$zeugnisObj."NSCHL$num"])' " } else { $attributes+="NSCHL$num = $($zeugnisObj."NSCHL$num")" Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Keine Text für Note $($zeugnisObj."FACH$num") = $($zeugnisObj."NSCHL$num") gefunden!" $outObj.warnings=$true; $outObj.Warning_msg += ":Keine Text für $($zeugnisObj."FACH$num") = Note $($zeugnisObj."NSCHL$num") gefunden!" } } } } for ($num=1;$num -le 5;$num++) { if(Get-Member -inputobject $zeugnisObj -name ("BEM$num") -Membertype Properties ){ if ([String]$zeugnisObj."BEM$num" -ne "") { if ($($Global:remarks[[String]$zeugnisObj."BEM$num"])) { $attributes+="BSCHL$num = '$($zeugnisObj."BEM$num")', BEM$num = '$($Global:remarks[[String]$zeugnisObj."BEM$num"])' " } else { $attributes+="BSCHL$num = '$($zeugnisObj."BEM$num")'" Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Keine Text für Bemerkung BEM$num = $($zeugnisObj."BEM$num") gefunden!" $outObj.warnings=$true; $outObj.Warning_msg += ": Keine Text für Bemerkung BEM$num = $($zeugnisObj."BEM$num") gefunden!" } } } } for ($num=1;$num -le 4;$num++) { if(Get-Member -inputobject $zeugnisObj -name ("VERM$num") -Membertype Properties ){ if ([String]$zeugnisObj."VERM$num" -ne "") { if ($($Global:annotations[[String]$zeugnisObj."VERM$num"])) { $attributes+="VSCHL$num = '$($zeugnisObj."VERM$num")', VERM$num = '$($Global:annotations[[String]$zeugnisObj."VERM$num"])' " } else { $attributes+="VSCHL$num = '$($zeugnisObj."VERM$num")'" Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Keine Text für VERM$num = $($zeugnisObj."VERM$num") gefunden!" $outObj.warnings=$true; $outObj.Warning_msg += ": Keine Text für VERM$num = $($zeugnisObj."VERM$num") gefunden!" } } } } if ([String]$zeugnisObj.Arbeitsverhalten -ne "") { if ($($Global:avsv[[String]$zeugnisObj.Arbeitsverhalten])) { $attributes+="ASV = '$($zeugnisObj.Arbeitsverhalten)', ASV_TEXT = '$($Global:avsv[[String]$zeugnisObj.Arbeitsverhalten])' " } else { $attributes+="ASV = '$($zeugnisObj.Arbeitsverhalten)'" Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Keine Text für Arbeitsverhalten $($zeugnisObj.Arbeitsverhalten) gefunden!" $outObj.warnings=$true; $outObj.Warning_msg +=": Keine Text für Arbeitsverhalten $($zeugnisObj.Arbeitsverhalten) gefunden!" } } if ([String]$zeugnisObj.Sozialverhalten -ne "") { if ($($Global:avsv[[String]$zeugnisObj.Sozialverhalten])) { $attributes+="SZV = '$($zeugnisObj.Sozialverhalten)', SZV_TEXT = '$($Global:avsv[[String]$zeugnisObj.Sozialverhalten])' " } else { $attributes+="SZV = '$($zeugnisObj.Sozialverhalten)'" Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Keine Text für Sozialverhalten $($zeugnisObj.Sozialverhalten) gefunden!" $outObj.warnings=$true; $outObj.Warning_msg +=": : Keine Text für Sozialverhalten $($zeugnisObj.Sozialverhalten) gefunden!" } } if ([String]$zeugnisObj.Fehltage_Gesamt -ne "") { $attributes+="FTG = $($zeugnisObj.Fehltage_Gesamt) " } if ([String]$zeugnisObj.Fehltage_Entschuldigt -ne "") { $attributes+="FTE = $($zeugnisObj.Fehltage_Entschuldigt) " } if ($zeugnisObj.Fehltage_Entschuldigt -gt $zeugnisObj.Fehltage_Gesamt) { Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Fehltage entschuldigt > Fehltage gesamt" $outObj.warnings=$true; $outObj.Warning_msg +=": Fehltage entschuldigt $($zeugnisObj.Fehltage_Entschuldigt) > Fehltage gesamt $($zeugnisObj.Fehltage_Gesamt) " } if ([String]$zeugnisObj.Abschluss -ne "") { $attributes+="ENTLABSCHLUSS = '$($zeugnisObj.Abschluss)' " } if ($Zeugnisart) { $attributes+="ZART = '$Zeugnisart' " } else { $attributes+="ZART = '$($zeugnisObj.Zeugnisart)' " } if ($Zeugnisdatum) { $attributes+="DATUM = '$Zeugnisdatum' " } else { if ($($zeugnisObj.Zeugnisdatum)) { $attributes+="DATUM = '$($zeugnisObj.Zeugnisdatum)' " } } if ([String]$zeugnisObj.Durchschnittnote -ne "") { if ($($Global:dnote[[String]$zeugnisObj.Durchschnittnote])) { $attributes+="[NOTE]=$($zeugnisObj.Durchschnittnote), NOTETEXT = '$($Global:dnote[[String]$zeugnisObj.Durchschnittnote])' " } else { $attributes+="[NOTE] = '$($zeugnisObj.Durchschnittnote)' " Write-Warning "NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER) $($zeugnisObj.VNAME) $($zeugnisObj.NNAME): Keine Text für Durchschnitsnote $($zeugnisObj.Durchschnittnote) gefunden!" $outObj.warnings=$true; $outObj.Warning_msg +=": Keine Text für Durchschnitsnote $($zeugnisObj.Durchschnittnote) gefunden!" } } for ($i=0;$i -lt $attributes.Length;$i++) { if ($i -eq 0) { $sql+=$attributes[$i]; } else { $sql+=","+$attributes[$i]; } } $sql+="where NR_SCHÜLER=$($zeugnisObj.NR_SCHÜLER)"; $command.CommandText = $sql Write-Verbose "$($command.CommandText)" try { $dataset = New-Object System.Data.DataSet $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command $out=$adapter.Fill($dataset) } catch { $outObj.success=$false; $outObj.msg=$_.Exception.Message } $outObj } } <# .Synopsis Exportiert die Schülerdaten in eine Excel Tabelle .DESCRIPTION Exportiert die Schülerdaten in eine Excel Tabelle .EXAMPLE Get-BZGrade -NR_SCHÜLER 1576 | Export-BZGrade -PATH c:\Temp Liest die Zeugnisdaten des Schülers mit der NR 1576 und Exportiert die Tabelle nach c:\Temp .EXAMPLE Get-BZGrade -NR_SCHÜLER 1576,1577 | Export-BZGrade -PATH c:\Temp -PASSWORD "geheim" Liest die Zeugnisdaten des Schüler mit den NR 1576 und 1577 und Exportiert die Tabelle nach c:\Temp und vergibt ein Kennwort .EXAMPLE Get-BZGrade -KNAME FIAE15G | Export-BZGrade -PATH c:\Temp } Liest die Zeugnisdaten der Schüler der Klasse FIAE15G und exportiert diese nach c:\Temp .EXAMPLE Get-BZGrade -KNAME FIAE15G,FIAE16H | Export-BZGrade -PATH c:\Temp Liest die Zeugnisdaten der Schüler der Klassen FIAE15G und FIAE16H und exportiert diese nach c:\Temp .EXAMPLE "FIAE15G","FIAE15H" | Get-BZGrade | Export-BZGrade -PATH c:\Temp Liest die Zeugnisdaten der Schüler der Klassen FIAE15G und FIAE15H und exportiert diese nach c:\Temp #> function Export-BZGrade { [CmdletBinding()] Param ( # Zeugnisobjekt [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)] [Object]$zeugnisObj, # Pdad f. den Export [Parameter(Position=1)] [string]$PATH=$HOME, # Pdad f. den Export [Parameter(Position=2)] [string]$PASSWORD ) Begin { #Write-Host "Begin" $files=@(); } Process { $filename = "\Zeugnisliste_$($zeugnisObj.KL_NAME).xlsx" if (-not $files.Contains($($PATH+$filename))) { if (Test-Path $($PATH+$filename)) { Write-Warning "File $($PATH+$filename) existiert bereits (skipped)"; return; } $files+=$($PATH+$filename); $zeugnisObj | Export-Excel -Path ($PATH+$filename) -AutoSize -ClearSheet -CellStyleSB { param( $workSheet, $totalRows, $lastColumn, [OfficeOpenXml.Style.ExcelFillStyle]$Pattern=[OfficeOpenXml.Style.ExcelFillStyle]::Solid, [System.Drawing.Color]$Color=[System.Drawing.Color]::FromArgb(255,230,153) ) foreach($c in $workSheet.cells) { if ($([String]$c.Value).length -eq 0) { $c.Style.Fill.PatternType=$Pattern $c.Style.Fill.BackgroundColor.SetColor($Color) } } } } else { $zeugnisObj | Export-Excel -Path ($PATH+$filename) -Append -AutoSize -CellStyleSB { param( $workSheet, $totalRows, $lastColumn, [OfficeOpenXml.Style.ExcelFillStyle]$Pattern=[OfficeOpenXml.Style.ExcelFillStyle]::Solid, [System.Drawing.Color]$Color=[System.Drawing.Color]::FromArgb(255,230,153) ) foreach($c in $workSheet.cells) { if ($([String]$c.Value).length -eq 0) { $c.Style.Fill.PatternType=$Pattern $c.Style.Fill.BackgroundColor.SetColor($Color) } } } } } End { #Write-Host "End" if ($PASSWORD) { foreach ($f in $files) { $excel = new-object -comobject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $False $wb=$excel.Workbooks.Open($f); $xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlWorkbookDefault $wb.SaveAs($f,$xlFixedFormat,$PASSWORD); $excel.Quit() } } $files } } <# .Synopsis Importiert die Zeugnisdaten aus einer Excel Tabelle .DESCRIPTION Importiert die Zeugnisdaten aus einer Excel Tabelle .EXAMPLE Import-BZGrade -PATH c:\Temp\Zeugnisliste_FIAE15G.xlsx .EXAMPLE "c:\Temp\Zeugnisliste_FIAE15G.xlsx","c:\Temp\Zeugnisliste_FIAE15G.xlsx" | Import-BZGrade .EXAMPLE Get-ChildItem C:\Temp\*.xlsx | Import-BZGRade .EXAMPLE Get-ChildItem C:\Temp\*.xlsx | Import-BZGRade | Set-BZGRade | Export-Excel -Path $HOME\Report.xlsx -ClearSheet -AutoSize -Show #> function Import-BZGrade { [CmdletBinding()] Param ( # Zeugnisobjekt [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)] [Alias("Name")] [string]$PATH=$HOME, # Pdad f. den Export [Parameter(Position=1)] [string]$PASSWORD ) Begin { } Process { if ($PASSWORD) { $out=Import-Excel -Path $PATH -Password $PASSWORD } else { $out=Import-Excel -Path $PATH } for ($num=1;$num -le 4;$num++) { if(Get-Member -inputobject $out -name ("VERM$num") -Membertype Properties ){ $out."VERM$num" = $([String]$out."VERM$num").Replace(",",".") } } $out } End { } } |