2016-11-22 1 views
0

Skript Powershell ist wie folgt:Excel in Powershell in CSV-Format ändert sich ständig von Daten und lange Zahlen

$E = New-Object -ComObject Excel.Application 
$E.Visible = $false 
$E.DisplayAlerts = $false 
$wb = $E.Workbooks.Open($args[0]) 
$wb_name = fix-wbname($wb.Name) 
foreach ($ws in $wb.Worksheets) 
{ 
    $n = $wb.Name + "_" + $ws.Name + ".csv" 
    $n = Join-Path -Path $args[1] -ChildPath $n 
    $ws.SaveAs($n, 6) 
} 

Es funktioniert, aber Excel tut dumme Dinge auf die Textformatierung. Datumsangaben im Format JJJJ-MM-TT werden in M ​​/ D/JJJJ geändert. Die Zahl 18446744073709500000 wird auf „1.84467E + 19“

Gibt es eine Möglichkeit, dies zu tun und haben Excel exportieren nur die Werte wie sie sind?

Antwort

0

In der Regel keine. Daten in Excel werden nicht intern im selben Format gespeichert, in dem Sie sie auf dem Bildschirm sehen. Sie werden in einer Art binärem Zahlenformat gespeichert, das fast zwangsläufig das gleiche intern in Windows verwendete Format hat. Ich habe das nicht erforscht. Sie müssen herausfinden, welche Standardkonvertierung stattfindet, wenn die Konvertierung in csv stattfindet. Dies könnte kulturabhängig sein.

Kulturabhängigkeiten können durch Einstellungen innerhalb von Excel gesteuert werden. Wenn die Konvertierungen in csv von Powershell ausgeführt werden, können Sie möglicherweise Kulturabhängigkeiten durch Angabe optionaler Parameter steuern.

Sorry das ist so vage.

Verwandte Themen