[Tutorial] Voor het inlezen van CSV

Door gebruikers voor gebruikers gemaakte tutorials
Forumregels
In dit forum geen vragen stellen, doe dat op de juiste plaats in het gewone forum.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

[Tutorial] Voor het inlezen van CSV

Bericht door RPG »

Hallo

Inleiding
Herhaaldelijk wordt de vraag gesteld hoe om te gaan met een CSV. De afkorting CSV staat voor comma separated values of wel waarden door een komma gescheiden. Deze afkorting wordt geloof ik ook wel gebruikt voor gelijksoortige file terwijl het scheidingsteken niet een komma is maar een andere letter.

Een goede aanpak van dit soort files laat de files meestal moeiteloos inlezen in OOo. Helaas kan ik niet geheel eenduidig zijn daar het gewenste ook niet een duidig is. Het gewenste kan zijn: een spreadsheet, een database en ik denk dat er meer mogelijkheden zijn.

Eerste observatie
Bij het kijken naar een CSV file kan men verschillende zaken opmerken aangaande de stijl van de file.
  • a) Is het Nederlandse stijl?
    b) Is het Amerikaanse stijl?
    c) Is het gemixt?
    d) Worden er ISO waarden voor datums gebruikt?
    e) Staan alle waarden tussen aanhalingstekens (zoals bij csv export van sommige banken)?
De stijl van de files herkent met aan het gebruik van komma en punten voor getallen en hoe de datum weer gegeven wordt

Code: Selecteer alles

Nederlands	Amerikaans
1.234,56	      1,234.56
31-1-2012	    1-31-2012
Voor de datum is er ook een ISO standaard. De zelfde datum wordt dan 20120131.

Ik durf niet te vertellen of ik compleet ben, hinderlijk gebreken kunnen doorgegeven worden zodat ik het kan corrigeren

Voorbeeld tekst Nederlands en een ISO datum
PrimaryKey,DatumISO,Datum,Straat,Bedrag
1,20110830,30-8-2011,Aristoteles straat 30,"1.234,56"
2,20120108,8-1-2012,Aristoteles straat 34,"-9,34"



Voorbeeld tekst Amerikaans en een ISO datum
PrimaryKey,DatumISO,Datum,Straat,Bedrag
1,20110830,8-30-2011,Aristoteles straat 30,"1,234.56"
2,20120108,1-8-2012,Aristoteles straat 34,-9.34




Bovenstaande tekst is door mij als voorbeeld gebruikt om in te lezen in Calc. Het maakt niet uit of ik het plak met shift-control-V of doe door het openen van de tekst file. In beide gevallen kom ik terecht bij de popup die mij allerlei aanpassingen laat doen voor het verkrijgen van een goed resultaat.

Bij het aan klikken van de opties zie je dat in het onderste gedeelte vaak iets veranderd. Zoek net zolang tot het gewenste resultaat bereikt is. Merk op dat als bv de datum en getal waarden ook tussen aanhalingstekens staan je het vinkje 'Veld met aanhalingstekens als tekst' uitzet. Dit levert geen zichtbare verandering op.

In de bovengenoemde popup zijn veel mogelijkheden om het inlezen aan te passen aan de gegeven tekst file.
  • Welke character set moet er gebruikt worden : Unicode(utf-8)
    Taal : default (Nederlands)
    Vanafrij : 1
    Opties voor scheidengstekens
Hier in kan veel geregeld worden en dat is sterk afhankelijk van de aangeboden file en het gewenste resultaat.

Bekijk goed wat er mogelijk is met onderstaande mogelijkheden
  • Vaste breedte
    Gescheiden
    Andere Opties
    Velden
Kies in dit gedeelte zorgvuldig wat tot het gewenste resultaat kan leiden. Ook kan voor elk veld soms nog weer wat apart aan gegeven worden. Klik hier bij op het kolom hoofd. Meestal staat daar standaard. Verschillende kolommen kunnen op andere manieren vertaald worden.

Het kan zijn dat achter af nog in de opmaak nog iets veranderd moet worden. Ik denk hierbij aan de opmaak van getallen.
De voorbeeld tekst kan ik zonder moeilijk heden in een keer aanpassen voor een spreadsheet. Achteraf moet ik alleen nog de getal opmaak aan passen.


Een nadere uitleg over de mogelijkheden
Het is niet mogelijk om aan te geven voor iedereen hoe de instellingen moeten zijn.

Begin met een tekst file en plak die in het document.
Het eenvoudigste is open het bestand in kladblok.
Kopieer het gehele bestand.
Plaats de cursor op de gewenste plaats.
Plak de tekst met control-shift -V in het spreadsheet.
Kies voor niet opgemaakte tekst.


Als het gewenste resultaat niet in een keer bereikt wordt dan zal men hier en daar iets moeten aanpassen om wel het gewenste resultaat te bereiken. Probeer het eerst met een klein aantal regels. Heel vaak zal het probleem niet in een keer opgelost worden. Vooral het onderste deel geeft veel mogelijkheden. Hier kan voor elke kolom iets anders op gegeven worden. Gezien de vele mogelijkheden blijf er niets anders over om hier ruim mee te experimenteren. Men met het eind resultaat altijd goed bekijken voordat men tevreden is want verkeerd ge-intrepeteerde waarden geven later problemen. Zoals een tekst die op een datum lijkt of een reeks cijfers die op een getal lijkt. Meestal zal zo'n reeks voorafgegaan worden door een hoge komma. Als men het resultaat niet op de gewenste manier kan bewerken is het resultaat van het inlezen van een CSV ook mogelijk niet goed gegaan.

Voor zover ik nu weet is dit mogelijk met alle versie van OOo van af OOo3.3

In het bovenstaande zijn ook reacties van anderen verwerkt.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4