Velden cq kolommen in een csv bestand anders rangschikken.

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.597
Ik gebruik momenteel Advanced CSV Converter v7.19 om van een .csv bestand de veldvolgorde aan te passen en te converteren naar een .txt
Hierbij gebruik ik het batch bestand:
Code:
Set path="C:\Program Files (x86)\Advanced CSV Converter\"
"csvcnv.exe" C:\Downloads\Input.csv C:\Downloads\Output.txt /columns:field2,field3,field4,field1,field8,field11,field15,field18,field17/SRCSEP;
Exit
Er is behoefte om tijdens het converteren lege kolommen tussen te voegen, zoals bv
Code:
Set path="C:\Program Files (x86)\Advanced CSV Converter\"
"csvcnv.exe" C:\Downloads\Input.csv C:\Downloads\Output.txt /columns:field2,field3,field4,field1,[COLOR="#FF0000"]empty1[/COLOR],[COLOR="#FF0000"]empty2[/COLOR],field8,field11,field15,[COLOR="#FF0000"]empty3[/COLOR],field18,field17/SRCSEP;
Exit
Uiteraard kan dat na het inladen in Excel en daarin kolommen toevoegen maar dat is niet de oplossing die ik zoek.
 
Laatst bewerkt:
Plaats eens een voorbeeld van zo'n CSV bestand en een TXT bestand zoals je die uiteindelijk wilt hebben.

N.B.:
Een CSV bestand is ook gewoon een teskt bestand.
 
Ik had het kunnen weten :D

met schermafdrukken hoe de output voor en na omzetting uitziet.

De originele bestanden hebben geen kolomnamen
 

Bijlagen

  • Input2.csv
    458 bytes · Weergaven: 15
  • Output2.txt
    534 bytes · Weergaven: 13
  • Input2.jpg
    Input2.jpg
    101,2 KB · Weergaven: 16
  • Output2.jpg
    Output2.jpg
    114,9 KB · Weergaven: 15
Laatst bewerkt:
Om de verplaatsingen beter zichtbaar te maken voor de forumbezoekers.
 
Zet dit in een bestandje met de naam CSV2TXT.vbs in de map C:\Downloads:
Code:
Dim of(9)

fileIN = WScript.Arguments.Item(0)
fileOUT= WScript.Arguments.Item(1)

Set fso = CreateObject("Scripting.FileSystemObject")
Set fi = fso.OpenTextFile(fileIN)
Set fo = fso.CreateTextFile(fileOUT,True)

Do Until fi.AtEndOfStream
    rgl = Split(fi.ReadLine, ";")
    of(0) = rgl(5) 'Code 
    of(1) = rgl(2) 'Datum 3
    of(2) = ""     'LEEG 1
    of(3) = rgl(0) 'Datum 1
    of(4) = rgl(1) 'Datum 2
    of(5) = rgl(3) 'Kenmerk
    of(6) = ""     'LEEG 2
    of(7) = ""     'LEEG 3
    of(8) = rgl(4) 'opm
    of(9) = ""     'LEEG 4
    fo.Write Join(of, ";")
    fo.Write vbCrLf
Loop

fi.Close
fo.Close

En dit in dezelfde map in een bestandje met de naam CNV.bat:
Code:
CSV2TXT C:\Downloads\Input.csv C:\Downloads\Output.txt

Zorg dat in de map C:\Downloads dat bestandje Input.csv aanwezig is en dubbelklik dan op dat .bat bestandje.
Het bestandje Output.txt wordt dan gemaakt.
 
Laatst bewerkt:
Top ! :thumb:
Werkt prima. Hier kan ik mee verder (denk ik)

De rij met kolomnamen kan ik in een verdere bewerking negeren of verwijderen.

Kan in elke map geplaatst worden als in de .bat de mapnamen niet vermeld staan en beide bestanden (.vbs en .bat ) in dezelfde map staan.
Code:
CSV2TXT Input2.csv Output5.txt
 
Veel plezier er mee :)
 
Zal ik zeker hebben. Bedankt !

Alles werkt nu naar wens met in totaal 29 velden/kolommen.

Heb wel moeten stoeien met padnamen en zonder succes.
Als oplossing gekozen om in de CNV.bat het .vbs bestand te kopiëren naar de downloadmap en aan het einde van het script van cnv.bat deze weer te verwijderen uit de downloadmap.
Achtergrond: de downloadmap is niet bedoeld om programma's definitief te herbergen.
 
Als die padnamen spaties bevatten moet je ze in het .bat bestand tussen quotes zeten:
Code:
CSV2TXT "C:\Een map naam\Input.csv" "C:\Een map naam\Output.txt"
 
Laatst bewerkt:
Als die padnamen spaties bevatten moet je ze in het .bat bestand tussen quotes zeten:
Code:
CSV2TXT "C:\Een map naam\Input.csv" "C:\Een map naam\Output.txt"

Klopt. Is bekend.
Het zijn relatief lange padnamen in .bat
Code:
padnaam1\CSV2TXT padnaam2\Input2.csv padnaam2\Output5.txt
Vooral padnaam 1 is lang.
padnaam2 is d:\downloads
 
De aanhouder wint.
Had een typefoutje in het script. Werkt nu wel direct vanuit de "diepe" plaats.
 
Een typefoutje is gauw gemaaakt ;)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan