Powershell: Export-Excel Funktion - Datum
Hallo admins,
ich habe mich zum ersten mal mit Powershell beschäftigt und scheitere gerade an einem Problem.
Um das ganze abzukürzen, zeige ich nur den wichtigsten Teil für die Problembeschreibung her:
Das Ergebnis sieht man dann hier:
Für mich sieht das Datum in Ordnung aus.
Wenn ich als Gegenprobe mir den Type ausgeben lasse mit:
sind beides Strings vom Base-Type System.Object:
Soweit so gut (für mich zumindest).
Wenn ich jetzt allerdings genau dieses Objekt oben in ein Excel exportieren möchte mit folgendem Befehl:
Dann erhalte ich folgenden Inhalt in der Excel Datei:
Hat jemand eine Idee woran das liegt?
Ich hatte mich etwas über Get-Culture eingelesen, da ist aber alles auf Deutsch eingestellt so wie es sein soll.
Das Excel ist auch auf Deutsch eingestellt.
Ich habe dann noch diesen Reddit Beitrage gefunden:
https://www.reddit.com/r/PowerShell/comments/o2lb4s/exportexcel_from_imp ...
Aber dort scheint es auch keine Lösung für das Problem zu geben.
Vielleicht hat ja jemand von euch noch einen Tipp für mich.
Gruß
Michi
ich habe mich zum ersten mal mit Powershell beschäftigt und scheitere gerade an einem Problem.
Um das ganze abzukürzen, zeige ich nur den wichtigsten Teil für die Problembeschreibung her:
# define import folder as root where the script is located
$importFolder = $PSScriptRoot
# define a valid from date (today)
$valFrom = Get-Date -Format "dd.MM.yyyy"
#define a valid to date (user input)
$valTo = Read-Host "Please enter a validity to date"
# create object with both values
$myObject = [PSCustomObject]@{
"Valid from" = $valFrom
"Valid to" = $valTo
}
$myObject | format-table
Das Ergebnis sieht man dann hier:
Für mich sieht das Datum in Ordnung aus.
Wenn ich als Gegenprobe mir den Type ausgeben lasse mit:
$valFrom.GetType()
$valTo.GetType()
sind beides Strings vom Base-Type System.Object:
Soweit so gut (für mich zumindest).
Wenn ich jetzt allerdings genau dieses Objekt oben in ein Excel exportieren möchte mit folgendem Befehl:
# define import folder as root where the script is located
$importFolder = $PSScriptRoot
# define a valid from date (today)
$valFrom = Get-Date -Format "dd.MM.yyyy"
#define a valid to date (user input)
$valTo = Read-Host "Please enter a validity to date"
# create object with both values
$myObject = [PSCustomObject]@{
"Valid from" = $valFrom
"Valid to" = $valTo
}
$myObject | Export-Excel -Path "$importFolder\test2.xlsx" -WorksheetName "Parameter"
Dann erhalte ich folgenden Inhalt in der Excel Datei:
Hat jemand eine Idee woran das liegt?
Ich hatte mich etwas über Get-Culture eingelesen, da ist aber alles auf Deutsch eingestellt so wie es sein soll.
Das Excel ist auch auf Deutsch eingestellt.
Ich habe dann noch diesen Reddit Beitrage gefunden:
https://www.reddit.com/r/PowerShell/comments/o2lb4s/exportexcel_from_imp ...
Aber dort scheint es auch keine Lösung für das Problem zu geben.
Vielleicht hat ja jemand von euch noch einen Tipp für mich.
Gruß
Michi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6243287424
Url: https://administrator.de/contentid/6243287424
Ausgedruckt am: 19.12.2024 um 12:12 Uhr
4 Kommentare
Neuester Kommentar
Servus Michi,
das Modul erkennt das String-Datum automatisch as Zahl weil es nur Digits und Punkte enthält, um das zu verhindern schließe die gewünschten Spalten davon aus mit dem Parameter -NoNumberConversion
Dir sollte aber klar sein das das Datum dann tatsächlich als "String" auch in Excel landet und nicht als echtes Datum formatiert. Will man es als echtes Datum dort haben, brauchst du es nicht in Text umwandeln sondern direkt so ohne Umwandlung übergeben.
Grüße Uwe
das Modul erkennt das String-Datum automatisch as Zahl weil es nur Digits und Punkte enthält, um das zu verhindern schließe die gewünschten Spalten davon aus mit dem Parameter -NoNumberConversion
$myObject | Export-Excel -Path "$importFolder\test2.xlsx" -WorksheetName "Parameter" -NoNumberConversion 'Valid from','Valid to'
# from date
$valFrom = get-date
# to date placeholder
$valTo = [datetime]::MaxValue
do {
# repeat get date input until valid date entered which ich greater or equal to from date
$dateinput = Read-host "Please enter a validity to date"
}until([datetime]::TryParse($dateinput,[cultureinfo]'de','None',[ref]$valTo) -and $valTo -ge $valFrom)
# create custom object
$myObject = [PSCustomObject][ordered]@{
"Valid from" = $valFrom
"Valid to" = $valTo
}
# export data to excel sheet
$myObject | Export-Excel -Path "$PSScriptRoot\test2.xlsx" -WorksheetName "Parameter"
Grüße Uwe
Moin,
Als Ergänzung: Dann muss man bei get-date den Parameter format weglassen.
Liebe Grüße
Erik
Zitat von @colinardo:
Dir sollte aber klar sein das das Datum dann tatsächlich als "String" auch in Excel landet und nicht als echtes Datum formatiert. Will man es als echtes Datum dort haben, brauchst du es nicht in Text umwandeln sondern direkt so ohne Umwandlung übergeben.
Dir sollte aber klar sein das das Datum dann tatsächlich als "String" auch in Excel landet und nicht als echtes Datum formatiert. Will man es als echtes Datum dort haben, brauchst du es nicht in Text umwandeln sondern direkt so ohne Umwandlung übergeben.
Als Ergänzung: Dann muss man bei get-date den Parameter format weglassen.
Liebe Grüße
Erik