Beste,

Ik heb een prachtige PHP parser die CSV bestanden uitspuugt. Als je dit CSV bestand open in Excel, is het wenselijk dat deze automatisch het scheidingsteken herkend, en de gegevens netjes in de juiste kolommen plaatst.

Het blijkt echter dat Excel dit alleen automatisch doet wanneer je het juiste scheidingsteken gebruikt (anders moet je een vervelende wizard doorlopen)..

Ook blijkt tevens dat Excel voor de verschillende versies (2000, 2003, 2007) een ander scheidingsteken wenst.. in diverse sites vind ik terug dat soms een TAB gewenst is, soms een KOMMA en soms een PUNT-KOMMA.

Nu wil ik mijn tool dus uitbreiden zodat iemand kan aangeven welke versie van Excel hij/zij gebruikt, zodat het juiste scheidingsteken wordt gebruikt..

Mijn vraag aan (een) van jullie.. heeft iemand dit ooit al eens uitgezocht.. en welk scheidingsteken moet ik voor welke versie van Excel gebruiken?

M.v.g
Pholeron
Ik heb toevallig net iets gemaakt voor de latere versies van Excel. Wat tot nu toe het beste lijkt te werken is een puntkomma als veldscheidingsteken, geen dubbele aanhalingstekens, en een linefeed als recordscheidingsteken.
Dat wordt een lastig probleem. Heb daar zelf ook als mee te maken gehad.
Het standaard lijstscheidingsteken staat in gesteld binnen Landinstellingen van Windows, zie http://office.microsoft.com/nl-nl/excel/HP100997251043.aspx onderaan, waarbij iedere gebruiken zijn eigen instelling kan maken. Het mooiste zou zijn om in het register van windows aan de client-side de bijbehorende sleutel uit te kunnen lezen en het te generen CSV bestand aan te passen.

Greetz, Harry
@Jan
Geen quotes? Hoe wordt het scheidingsteken dan ge-escaped?

@gharryh
Dus eigenlijk ligt het niet alleen aan de versie van Excel, maar aan de (doorgaans default) instellingen van je Windows versie?

Dus eigenlijk moet ik met nog meer varianten rekening houden?!

Ik ga er vanuit dat de eindgebruikers niet aan dergelijke default instellingen zullen klooien.

Windows 2000/ME/XP/Vista/7
In combinatie met
Excel 2000/2003/2007 (zijn er nog meer versies?)

Ligt er aan wie de eindgebruikers van je bestanden zijn. Je kunt ook denken aan een instructie aan de gebruikers of bij grotere organisaties de beheerder vragen om bij de PC's van die gebruikers de boel standaard op jouw lijst scheidinsteken zetten.
Maar voorkeur gaat uit naar een download wizard; waarin mensen kunnen aangeven welke versie van windows/excel ze gebruiken.

Als ik de optie geef download met komma/puntkomma/tab als scheidingsteken, komen ze er zeker niet uit ;)
Pholeron schreef op 06.11.2009 20:22
@Jan
Geen quotes? Hoe wordt het scheidingsteken dan ge-escaped?

Dat doet Excel heel gek: als er een puntkomma in de veldwaarde voorkomt, wordt de dubbele quote het scheidingsteken.

Voorbeeld:
"een;twee";drie;vier
vijf;zes;zeven
Euh, huh? :P

Kolom 1 krijgt dan: een;twee
en kolom 2 krijgt dan: drie
en kolom 3 krijgt dan: vier
etc.. toch?

Als dat goed werkt, waarom dan niet alles quote'en?
Dat heb ik even uitgetest. Stel, je slaat het op die manier op in een CSV bestand, dan laadt Excel het gewoon keurig in. Sla je het daarna met Excel weer op als CSV, dan hebben alleen de cellen waar een ; in stond weer de dubbele quote als scheidingsteken.
Okay, maar zodra de CSV export eenmaal is geopend zullen de meeste gebruikers deze toch als .xls opslaan omdat ze de boel mogelijk willen opmaken e.d.; dus dat is geen ramp als na het bewerken de boel anders wordt opgeslagen.

Zolang ik maar kan zeggen dat ik de bestanden goed heb aangeleverd, dan kunnen e hoogstens Excel verfoeien :P

Reageren