jocheng
Goto Top

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 face-sad

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

114757
Lösung 114757 25.02.2016 aktualisiert um 12:01:47 Uhr
Goto Top
Moin,
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
jocheng
jocheng 25.02.2016 um 12:06:04 Uhr
Goto Top
Ich brauche leider ein Batch Script weil darüber nachher dann auch ein import läuft face-sad

Zitat von @114757:

Moin,
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
114757
114757 25.02.2016 aktualisiert um 12:13:50 Uhr
Goto Top
Zitat von @jocheng:

Ich brauche leider ein Batch Script weil darüber nachher dann auch ein import läuft face-sad
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 face-smile
jocheng
jocheng 25.02.2016 um 12:49:06 Uhr
Goto Top
Wie bekomme ich das in eine Batch???? Eigentlich brauche ich nur das die CSV geschrieben wird mit dem Austausch face-smile

Zitat von @114757:

Zitat von @jocheng:

Ich brauche leider ein Batch Script weil darüber nachher dann auch ein import läuft face-sad
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 face-smile
114757
114757 25.02.2016 aktualisiert um 13:08:40 Uhr
Goto Top
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 Batch

powershell -Executionpolicy Bypass -File "c:\Pfad\script.ps1"  

Pfade zu den Dateien im obigen PS-Skript natürlich an deine Umgebung anpassen.
jocheng
jocheng 25.02.2016 um 17:18:35 Uhr
Goto Top
muß Excel dafür installiert sein??? Ich bekomme einen Fehler

Zitat von @114757:

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 Batch

> powershell -Executionpolicy Bypass -File "c:\Pfad\script.ps1"  
> 

Pfade zu den Dateien im obigen PS-Skript natürlich an deine Umgebung anpassen.
114757
114757 25.02.2016, aktualisiert am 26.02.2016 um 11:00:38 Uhr
Goto Top
muß Excel dafür installiert sein??? Ich bekomme einen Fehler
Ja, natürlich face-smile was erwartest du sonst bei den folgenden Zeilen: ???
# Excel Objekt 
$objExcel = New-Object -Com Excel.Application 
jocheng
jocheng 09.03.2016 um 18:23:35 Uhr
Goto Top
manchmal ist man eben einfach dumm :D:D
jocheng
jocheng 07.04.2016 um 15:02:36 Uhr
Goto Top
Ich bräuchte nochmal Hilfe mit dem Script

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 face-sad
114757
114757 07.04.2016 um 17:13:32 Uhr
Goto Top
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 face-sad
Null 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
jocheng
jocheng 07.04.2016 um 18:15:54 Uhr
Goto Top
Du bist genial. Klappt mal wieder super