De CSV-specificatie is er een die ik op veel verschillende manieren geïmplementeerd vind... het lijkt eigenlijk alsof het maar half gespecificeerd is, wat frustrerend is gezien de populariteit.
Om een nieuwe regel in een cel in een CSV op te nemen, moet die cel mogelijk worden ingepakt of moet de nieuwe regel worden geëscaped. U zult in het gekoppelde document zien dat er drie manieren zijn om dit te doen - en verschillende programma's behandelen het anders:
- Excel plaatst de hele cel tussen dubbele aanhalingstekens:een cel kan (unscaped) nieuweregeltekens bevatten en als een enkele cel worden beschouwd, zolang deze tussen dubbele aanhalingstekens staat (merk ook op dat u Excel-stijl moet gebruiken dubbele aanhalingstekens escapen binnen de celinhoud)
- Andere programma's voegen een enkele backslash in voor het teken, dus een regel die eindigt op
\
wordt niet beschouwd als het einde van een regel, maar als een teken voor een nieuwe regel in de cel. Een cel kan nieuwe regeltekens zonder escapecodes bevatten, zolang ze worden voorafgegaan door het backslash-teken. - Anderen vervangen nog steeds een nieuwe regel met teken-escaping in C-stijl, de eigenlijke tekenreeks
\n
of\r\n
. In dit geval is de cel volledig ontsnapt uit nieuwe regeltekens.
Het probleem wordt nog verergerd door de mogelijke noodzaak om te ontsnappen aan de controletekens (evenals andere inhoud (bijv. "
in #1, en \
in #2+3) en verschillende escape-stijlen (bijv. een ingesloten aanhalingsteken kan worden geëscaped als:dubbele dubbele aanhalingstekens ""
of backslash-dubbele aanhalingstekens \"
)
Mijn advies :genereer een open-office-document met meerdere regels en key-escape-tekens en zie hoe open-office een CSV
genereert het dossier. Van daaruit kunt u beslissen welke van de bovenstaande methoden u wilt gebruiken voor nieuwe regels in cellen en welke escape-methode.
voorbeeld van stijl-1 (excel):
#num,str,num
1,"Hello
World",1990
2,"Yes",1991
voorbeeld van stijl-2:
#num,str,num
1,Hello \
Word,1990
2,Yes,1991
voorbeeld van stijl-3:
#num,str,num
1,Hello \nWorld,1990
2,Yes,1991