XLXS zu CSV + Wert ersetzen - Batch
Hallo Leute ich habe ein Problem
Ich brauch ein kleines Batch Script das ich täglich laufen lassen kann das mir aus einer XLXS Datei eine CSV macht und einen Wert ersetzt
Die Excel Datei ist so aufgebaut
394356010 XL 886060125335 CLASSICSOCKI >50
394356010 M 884803457223 CLASSICSOCKI 42
394356010 L 884664357230 CLASSICSOCKI >50
Neben dem Umwandeln von XLSX muß noch die >50 in 50 umgewandelt werden oder einfach das > gelöscht werden.
Kann mir jemand helfen??? Gerade beim umwandeln habe ich keine Ahnung
Ich brauch ein kleines Batch Script das ich täglich laufen lassen kann das mir aus einer XLXS Datei eine CSV macht und einen Wert ersetzt
Die Excel Datei ist so aufgebaut
394356010 XL 886060125335 CLASSICSOCKI >50
394356010 M 884803457223 CLASSICSOCKI 42
394356010 L 884664357230 CLASSICSOCKI >50
Neben dem Umwandeln von XLSX muß noch die >50 in 50 umgewandelt werden oder einfach das > gelöscht werden.
Kann mir jemand helfen??? Gerade beim umwandeln habe ich keine Ahnung
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 297331
Url: https://administrator.de/forum/xlxs-zu-csv-wert-ersetzen-batch-297331.html
Ausgedruckt am: 23.12.2024 um 11:12 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Darfs auch Powershell sein ? Damit ist das schnell erledigt. Mit Batch bräuchtest du nämlich weitere externe Tools.
Gruß jodel32
Darfs auch Powershell sein ? Damit ist das schnell erledigt. Mit Batch bräuchtest du nämlich weitere externe Tools.
# Quelldatei
$quelle = 'C:\quelle.xlsx'
# Zieldatei
$ziel = 'C:\Export.csv'
# Excel Objekt
$objExcel = New-Object -Com Excel.Application
# Mappe öffnen
$wb = $objExcel.Workbooks.Open($quelle)
# Excel anzeigen
$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false
# In Spalte E alle '>' Zeichen entfernen
$wb.Sheets.Item(1).Range("E:E").Replace('>','')
# Datei als CSV speichern
$wb.SaveAs($ziel,6)
$objExcel.DisplayAlerts = $true
# Dokument schließen
$wb.Close($false)
# Excel schließen
$objExcel.Quit()
# Ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel)
Gruß jodel32
Zitat von @jocheng:
Ich brauche leider ein Batch Script weil darüber nachher dann auch ein import läuft
Dann brauchst du aber externe Tools oder ein integriertes VBS, ohne diese kannst du mit Excel-Files in der Konsole nix anstellen, btw. kannst du das obige auch problemlos mit in eine Batch einbauen Ich brauche leider ein Batch Script weil darüber nachher dann auch ein import läuft
Wie bekomme ich das in eine Batch???? Eigentlich brauche ich nur das die CSV geschrieben wird mit dem Austausch
Du packst das obige Skript in eine *.ps1 Datei und dann schreibst du in die Batchpowershell -Executionpolicy Bypass -File "c:\Pfad\script.ps1"
Pfade zu den Dateien im obigen PS-Skript natürlich an deine Umgebung anpassen.
muß Excel dafür installiert sein??? Ich bekomme einen Fehler
Ja, natürlich was erwartest du sonst bei den folgenden Zeilen: ???# Excel Objekt
$objExcel = New-Object -Com Excel.Application
Zitat von @jocheng:
Leider habe ich jetzt in der Spalte mit den EaN Nummern (886060125335) nicht mehr immer die "richtige Nummer" sondern teilweise ein 00886060125335 stehen. Kann ich die Nummer von hinten nach vorne abschneiden??
Die 00 am Anfang sind das Problem
Null Problem:Leider habe ich jetzt in der Spalte mit den EaN Nummern (886060125335) nicht mehr immer die "richtige Nummer" sondern teilweise ein 00886060125335 stehen. Kann ich die Nummer von hinten nach vorne abschneiden??
Die 00 am Anfang sind das Problem
# Quelldatei
$quelle = 'C:\quelle.xlsx'
# Zieldatei
$ziel = 'C:\Export.csv'
# Excel Objekt
$objExcel = New-Object -Com Excel.Application
# Mappe öffnen
$wb = $objExcel.Workbooks.Open($quelle)
# Excel anzeigen
$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false
# Sheet-Referenz holen
$ws = $wb.Sheets.Item(1)
# In Spalte E alle '>' Zeichen entfernen
$ws.Range("E:E").Replace('>','')
# Führende Nullen in der Spalte C entfernen
$ws.Range("C1:C" + $ws.Range("C1").End(-4121).Row) | %{$_.Value() = $_.Value().TrimStart('0')}
# Datei als CSV speichern
$wb.SaveAs($ziel,6)
$objExcel.DisplayAlerts = $true
# Dokument schließen
$wb.Close($false) | out-null
# Excel schließen
$objExcel.Quit() | out-null
# Ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel) | out-null