mitnick
Goto Top

XLS zu CSV mit Win.powershell?

Hallo zusammen, ich sitze jetzt schon einige Zeit an einem Problem und komme einfach nicht weiter...

Ich habe verschiedene XLS dateien die aber alle gleich aufgebaut sind. Diese Dateien müssen zur Weiterverarbeitung in das CSV Format umformatiert werden. Die Tabellen haben alle einen Kopf und die Daten beginnen ab der 3 Spalte (zur seite sind auch noch Datensätze vorhanden). Ich würde mir jetzt gerne ein Skript basteln womit man aus den XLS Dateien CSVs machen kann. Das ganze sollte aber eher einfach sein...das das meine Nutzer auch selbst ausführen können....daher dachte ich an ein Powershell Skript, wo ich einfach einen Input und einen Output Ordner habe und das Skipt wandelt alles um.

Hat jemand vll. eine Idee wie das ganze aussehen müsste?

danke schon mal.

lg hscheip

Content-ID: 137097

Url: https://administrator.de/contentid/137097

Ausgedruckt am: 26.11.2024 um 02:11 Uhr

76109
76109 01.03.2010 um 11:52:18 Uhr
Goto Top
Hallo hscheip!

Wenn's nicht unbedingt PowerShell sein muss, mit einem VB-Script (*.vbs) läßt sich so etwas sehr einfach realisieren.

Gruß Dieter
mitnick
mitnick 01.03.2010 um 12:01:30 Uhr
Goto Top
Hättest du da einen vorschlag wie ich das ganze machen könnte? mit vbs ab ich so was auch noch nie gemacht.

Lg hscheip
76109
76109 01.03.2010 um 12:45:16 Uhr
Goto Top
Hallo hscheip!

Zitat von @mitnick:
Hättest du da einen vorschlag wie ich das ganze machen könnte? mit vbs ab ich so was auch noch nie gemacht.
Im Prinzip schon. Das hängt aber erstmal davon ab, was genau exportiert werden soll.

Ganze Zeilen Von Bis oder ab Zeile und Spalte Von Bis, Tabelle1...?

Konstante Eing-/Ausgabe-Pfade?

Trennzeichen Semikolon?

Also, mach mal genauere Angabenface-wink

Bei mir wird's allerdings etwas dauern, weil ich jetzt erstmal unterwegs bin. Vielleicht schaut ja in der Zwischenzeit noch ein Scripter vorbei, der Dir hilfreich zur Seite stehen kann.

Gruß Dieter
mitnick
mitnick 01.03.2010 um 13:07:17 Uhr
Goto Top
Ah oke dann werd ich das ganze mal etwas genauer beschreiben ^^,
Also es geht um Tabellen die eigentlich Immer unterschiedliche Datensätze haben....einmal 50, das andere mal 100 Einträge. Das ganze sollte dann idealerweise in eine CSV umgewandelt werden, die die Trennungen als Semikolon hat. Die ein und ausgangspfade wären immer gleich.

lg hscheip
bastla
bastla 01.03.2010 um 15:29:33 Uhr
Goto Top
Hallo hscheip!

Ein von Dieter angesprochenes VBScript könnte etwa so aussehen:
OrdnerEin = "D:\Ein"  
OrdnerAus = "D:\Aus"  

AbZeile = 2
AbSpalte = 1 'Spalte A  
Feldanzahl = 7

Set XL = CreateObject("Excel.Application")  
Set fso = CreateObject("Scripting.FileSystemObject")  

For Each Datei In fso.GetFolder(OrdnerEin).Files
    If LCase(fso.GetExtensionName(Datei.Name)) = "xls" Then  
        XL.Workbooks.Open Datei.Path
        Zeile = AbZeile
        Aus = ""  
        Do While XL.Cells(Zeile, AbSpalte) <> ""  
            Satz = XL.Cells(Zeile, AbSpalte)
            For i = 1 To Feldanzahl - 1
                Satz = Satz & ";" & XL.Cells(Zeile, AbSpalte + i)  
            Next
            Aus = Aus & vbCrLf & Satz
            Zeile = Zeile + 1
        Loop
        If Aus <> "" Then  
            fso.CreateTextFile(OrdnerAus & "\" & fso.GetBaseName(Datei.Name) & ".csv").Write Mid(Aus, 3)  
        End If
        XL.ActiveWorkbook.Close False
    End If
Next
XL.Quit
MsgBox "Fertig."  
Grüße
bastla
mitnick
mitnick 01.03.2010 um 16:01:24 Uhr
Goto Top
danke für das beispiel, ich glaub nur ich bin gerade etwas zu doof um es zu starten. (wie gesagt vbs ist noch neuland für mich), wenn ich das script ausführen will bekomm ich gleich die Meldung das in Zeile 1 bei Zeichen 1 ein Fehler ist.

lg hscheip
76109
76109 01.03.2010 um 16:55:35 Uhr
Goto Top
Hallo hscheip, Hallo bastla!

@hscheip
Wie startest Du das Skript? Einen Fehler kann ich auf den ersten Blick nicht erkennen.

Hast Du die Pfade korrekt mit Hochkommata angepasst, z.B. so:
OrdnerEin = "X:\...\...\MeinOrdner"

Oder hast Du vielleicht den Text so mit Zeilennummern kopiert? Dann rechts "Quelltext" anklicken und kopieren.

@bastla
Danke für's einspringenface-wink

Gruß Dieter
mitnick
mitnick 02.03.2010 um 08:14:51 Uhr
Goto Top
Guten Morgen zusammen, vielen dank jetzt gehts. Ich hatte die "" vergessen zu setzten. Wenn ihr mal in der gegend von Koblenz seit, ein Mittagessen geht auf mich face-smile

Lg Holger
76109
76109 02.03.2010 um 10:16:00 Uhr
Goto Top
Guten Morgen Holger!

Wow, ein ganzes Mittagessenface-smile

Danke für das Angebot. Ein Kaffee oder Cappuccino würde auch genügenface-wink

Gruß Dieter