Bekijk Volledige Versie : PHP: csv-bestand
Hallo,
Om een bestelling toe te voegen aan een bestand, dat ik later bijvoorbeeld
m.b.v. van excel kan openen gebruik ik:
$opvoer=fopen("/home/httpd/html/mijn.domein/HTML/bestellingen.csv", "a+");
en:
fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$aa
ntal,$prijs,$totaal,\r\n");
Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
seperated value'-bestand te creëren, maar dat valt dus tegen. Als ik het
bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel. En dat
is dus niet de bedoeling.
Hoe maak ik het zo dat er een echt csv-bestand van maak, zodat iedere
variabele echt per cel weergegeven wordt?
Alvast heel hartelijk bedankt.
Marc.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.544 / Virus Database: 338 - Release Date: 25-11-2003
Daniel Tryba
26/11/03, 23:00
Marc <nono@nono.nono> wrote:
> fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$aa
> ntal,$prijs,$totaal,\r\n");
>
>
> Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
> seperated value'-bestand te cre?ren, maar dat valt dus tegen. Als ik het
> bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel. En dat
> is dus niet de bedoeling.
IMHo staat CSV voor Character Seperated Values. Je methode is dus
volledig juist en je dient het programma waarmee je deze regels wilt
inlezen op de hoogte te stellen van het feit dat je ',' als seperator
gebruikt.
--
Daniel Tryba
Maarten Wierda
26/11/03, 23:00
Marc wrote:
[...]
> $opvoer=fopen("/home/httpd/html/mijn.domein/HTML/bestellingen.csv", "a+");
<snip>
> fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$aa
> ntal,$prijs,$totaal,\r\n");
>
> Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
> seperated value'-bestand te creëren, maar dat valt dus tegen. Als ik het
> bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel. En dat
> is dus niet de bedoeling.
Weet je zeker dat de komma in dit geval het scheidingsteken. Ik meen me
te herinneren dat in de Nederlandse versies van Excel een puntkomma
wordt gebruikt. Ook wilt het nog wel eens helpen om vanuit Excel 'Openen
als' te kiezen, vraag me niet waarom ;)
--
Cheers, Maarten Wierda
cp: Prayer For Cleansing - A Dozen Black Roses
"Teenage angst has paid off well, now I'm bored and old"
Maarten Wierda
26/11/03, 23:00
Daniel Tryba wrote:
> IMHo staat CSV voor Character Seperated Values.
Volgens mij 'Comma Separated Value'.
--
Cheers, Maarten Wierda
cp: Prayer For Cleansing - A Dozen Black Roses
"Teenage angst has paid off well, now I'm bored and old"
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bq37c2$b1$4@news.tue.nl...
> Marc <nono@nono.nono> wrote:
> >
fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$aa
> > ntal,$prijs,$totaal,\r\n");
> >
> >
> > Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
> > seperated value'-bestand te cre?ren, maar dat valt dus tegen. Als ik het
> > bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel. En
dat
> > is dus niet de bedoeling.
>
> IMHo staat CSV voor Character Seperated Values. Je methode is dus
> volledig juist en je dient het programma waarmee je deze regels wilt
> inlezen op de hoogte te stellen van het feit dat je ',' als seperator
> gebruikt.
>
> --
>
> Daniel Tryba
>
Ik heb hem nu bestelling.txt genoemd en open hem dan met excel: die gaat nu
op zijn beurt vragen of het bestand scheidingstekens heeft en uiteindelijk
komt ie met een correcte weergave!
Wel jammer dat ie hem niet drect als csv-bestand wil herkennen, maar goed,
het bovenstaande werkt ook.
Bedankt voor de tips!
Marc.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.544 / Virus Database: 338 - Release Date: 25-11-2003
Rene Pijlman
26/11/03, 23:45
Marc:
>fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$aa
>ntal,$prijs,$totaal,\r\n");
En wat als er komma's staan in $time, $naam, $straat, $huisnummer,
$postcode, $plaats, $email $aantal, $prijs of $totaal?
>Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
>seperated value'-bestand te creëren
Dat is min-of-meer waar, als je ook nog denkt aan het quoten en escapen
van komma's. Gek genoeg is CSV, als één van de meestgebruikte
uitwisselingsstandaards, vziw nergens formeel gedefinieerd. Ik heb me ooit
suf gezocht toen ik een .csv-generator moest maken.
Maar hier staat zo te zien wel een aardige samenvatting:
http://www.elections.state.md.us/campaign_finance/electronic_filing/tech_specs.html
>Als ik het bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel.
Als ik een tekstbestand open in Excel dan word ik uitgenodigd om een
enorme wizard te doorlopen. Het heeft vast te maken met hoe je het bestand
precies opent.
If-all-else fails is er natuurlijk altijd nog XML...
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Daniel Tryba
26/11/03, 23:45
Maarten Wierda <moart3nAT@chello.nl> wrote:
>> IMHo staat CSV voor Character Seperated Values.
>
> Volgens mij 'Comma Separated Value'.
>
Dat verklaart waar je bv in fopencsv (php implementie) als 3de parameter
iets anders dan een ',' kan opgeven (zelfs een string ipv een
character). En dat 'http://www.google.com/search?q=define:CSV' zo'n
mooie defities als 'Comma Separated Value. Typically a text file
containing values with comma delimiters (i.e. commas separating distinct
field' heeft waar de comma stiekum variabel is :)
--
Daniel Tryba
Maarten Wierda
26/11/03, 23:45
Marc wrote:
<snip>
> Wel jammer dat ie hem niet drect als csv-bestand wil herkennen, maar goed,
> het bovenstaande werkt ook.
Maar dat ligt aan het programma, niet aan je CSV-bestand.
--
Cheers, Maarten Wierda
"Teenage angst has paid off well, now I'm bored and old"
Maarten Wierda
27/11/03, 00:00
Daniel Tryba wrote:
>>>IMHo staat CSV voor Character Seperated Values.
>>
>>Volgens mij 'Comma Separated Value'.
<snip>
> En dat 'http://www.google.com/search?q=define:CSV' zo'n
> mooie defities als 'Comma Separated Value. Typically a text file
> containing values with comma delimiters (i.e. commas separating distinct
> field' heeft waar de comma stiekum variabel is :)
Lekker duidelijk ;)
PS. Ik gebruik meestal <http://www.acronymfinder.com/>.
--
Cheers, Maarten Wierda
cp: R.E.M. - Finest Worksong
"Teenage angst has paid off well, now I'm bored and old"
"Maarten Wierda" <moart3nAT@chello.nl> schreef in bericht
news:bq3ab0$29qr$2@nl-news.euro.net...
> Marc wrote:
>
> <snip>
>
> > Wel jammer dat ie hem niet drect als csv-bestand wil herkennen, maar
goed,
> > het bovenstaande werkt ook.
>
> Maar dat ligt aan het programma, niet aan je CSV-bestand.
>
klopt helemaal!
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.544 / Virus Database: 338 - Release Date: 25-11-2003
"Rene Pijlman" <reply.in.the.newsgroup@my.address.is.invalid> schreef in
bericht news:gm9asvktop5dcnr3k7k5f5tj9n5hgj4ip3@4ax.com...
> Marc:
>
>fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$a
a
> >ntal,$prijs,$totaal,\r\n");
>
> En wat als er komma's staan in $time, $naam, $straat, $huisnummer,
> $postcode, $plaats, $email $aantal, $prijs of $totaal?
>
> >Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
> >seperated value'-bestand te creëren
>
> Dat is min-of-meer waar, als je ook nog denkt aan het quoten en escapen
> van komma's. Gek genoeg is CSV, als één van de meestgebruikte
> uitwisselingsstandaards, vziw nergens formeel gedefinieerd. Ik heb me ooit
> suf gezocht toen ik een .csv-generator moest maken.
>
> Maar hier staat zo te zien wel een aardige samenvatting:
>
http://www.elections.state.md.us/campaign_finance/electronic_filing/tech_specs.html
>
> >Als ik het bestand bijvoorbeeld open in excel zet ie de gehele regel in
een cel.
>
> Als ik een tekstbestand open in Excel dan word ik uitgenodigd om een
> enorme wizard te doorlopen. Het heeft vast te maken met hoe je het bestand
> precies opent.
>
> If-all-else fails is er natuurlijk altijd nog XML...
>
> --
> René Pijlman
>
Inderdaad, bij een .txt-bestand nodigt excel je uit om tot een goede
weergave te komen. Ik denk echter dat mijn klant niet op die wizard zit te
wachten, die wil meteen in excel zijn bestelijst zien :(.
Marc.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.544 / Virus Database: 338 - Release Date: 25-11-2003
Daniel Tryba wrote:
> Maarten Wierda <moart3nAT@chello.nl> wrote:
>>> IMHo staat CSV voor Character Seperated Values.
>>
>> Volgens mij 'Comma Separated Value'.
>>
>
> Dat verklaart waar je bv in fopencsv (php implementie) als 3de
> parameter iets anders dan een ',' kan opgeven (zelfs een string ipv
> een character). En dat 'http://www.google.com/search?q=define:CSV'
> zo'n mooie defities als 'Comma Separated Value. Typically a text file
> containing values with comma delimiters (i.e. commas separating
> distinct field' heeft waar de comma stiekum variabel is :)
Nog een paar opmerkingen (puur terzijde)
Comma-separated geeft problemen omdat de komma in vele landen / talen (?)
ook al het decimale scheidingsteken is. Wat betekent dat je die dus de hele
tijd om moet zetten. Dat is een optie maar maakt de waarde van een csv als
'makkelijk' bestand wel lastiger.
Windows, en misschien andere systemen (dat weet ik niet) hebben globale
instellingen om dergelijke dingen te regelen. Windows heeft daar in elk
geval ook een 'lijstscheidingsteken' in opgenomen, en in Nederlandse
systemen staat die standaard op ';' Waarmee het probleem van de decimalen is
ondervangen in ruil voor een nieuw probleem.
Internationalisation is zo leuk )-:
--
Inca
NEE - Geen handel met voorkennis
JA - Wel met een gouden tip
http://www.poldermodelstickers.nl/
Maarten Wierda
27/11/03, 00:30
Inca wrote:
[CSV]
> Nog een paar opmerkingen (puur terzijde)
> Comma-separated geeft problemen omdat de komma in vele landen / talen (?)
> ook al het decimale scheidingsteken is. Wat betekent dat je die dus de hele
> tijd om moet zetten. Dat is een optie maar maakt de waarde van een csv als
> 'makkelijk' bestand wel lastiger.
> Windows, en misschien andere systemen (dat weet ik niet) hebben globale
> instellingen om dergelijke dingen te regelen. Windows heeft daar in elk
> geval ook een 'lijstscheidingsteken' in opgenomen, en in Nederlandse
> systemen staat die standaard op ';' Waarmee het probleem van de decimalen is
> ondervangen in ruil voor een nieuw probleem.
Ik heb dit soort problemen al eerder ondervonden en dat is erg
vervelend. Je zou verwachten dat CSV een standaardoplossing is, maar uit
de praktijk blijkt wel anders.
Wanneer ik ervoor koos om CSV-bestanden - om welke reden dan ook - aan
te bieden, werd deze door de gebruiker 99 van de 100 keer in Excel
geopend. Daarom heb ik maar besloten om voortaan Excel-bestanden te
genereren, of kom ik dan soortgelijke problemen tegen ;)
> Internationalisation is zo leuk )-:
Ik oordeel pas na antwoord op mijn vorige vraag gehad te hebben ;)
--
Cheers, Maarten Wierda
cp: R.E.M. - Finest Worksong (Other Mix)
"Teenage angst has paid off well, now I'm bored and old"
"Maarten Wierda" <moart3nAT@chello.nl> schreef in bericht
news:bq3cuf$2oi1$1@nl-news.euro.net...
> Inca wrote:
>
> [CSV]
>
> > Nog een paar opmerkingen (puur terzijde)
> > Comma-separated geeft problemen omdat de komma in vele landen / talen
(?)
> > ook al het decimale scheidingsteken is. Wat betekent dat je die dus de
hele
> > tijd om moet zetten. Dat is een optie maar maakt de waarde van een csv
als
> > 'makkelijk' bestand wel lastiger.
> > Windows, en misschien andere systemen (dat weet ik niet) hebben globale
> > instellingen om dergelijke dingen te regelen. Windows heeft daar in elk
> > geval ook een 'lijstscheidingsteken' in opgenomen, en in Nederlandse
> > systemen staat die standaard op ';' Waarmee het probleem van de
decimalen is
> > ondervangen in ruil voor een nieuw probleem.
>
> Ik heb dit soort problemen al eerder ondervonden en dat is erg
> vervelend. Je zou verwachten dat CSV een standaardoplossing is, maar uit
> de praktijk blijkt wel anders.
>
> Wanneer ik ervoor koos om CSV-bestanden - om welke reden dan ook - aan
> te bieden, werd deze door de gebruiker 99 van de 100 keer in Excel
> geopend. Daarom heb ik maar besloten om voortaan Excel-bestanden te
> genereren, of kom ik dan soortgelijke problemen tegen ;)
>
Klinkt interessant, maar hoe genereer je dan excel-bestanden met php?
Marc.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.544 / Virus Database: 338 - Release Date: 26-11-2003
"Marc" <nono@nono.nono> schreef in bericht
news:bq3djh$hqa$1@news1.tilbu1.nb.home.nl...
>
> "Maarten Wierda" <moart3nAT@chello.nl> schreef in bericht
> news:bq3cuf$2oi1$1@nl-news.euro.net...
> > Inca wrote:
> >
> > [CSV]
> >
> > > Nog een paar opmerkingen (puur terzijde)
> > > Comma-separated geeft problemen omdat de komma in vele landen / talen
> (?)
> > > ook al het decimale scheidingsteken is. Wat betekent dat je die dus de
> hele
> > > tijd om moet zetten. Dat is een optie maar maakt de waarde van een csv
> als
> > > 'makkelijk' bestand wel lastiger.
> > > Windows, en misschien andere systemen (dat weet ik niet) hebben
globale
> > > instellingen om dergelijke dingen te regelen. Windows heeft daar in
elk
> > > geval ook een 'lijstscheidingsteken' in opgenomen, en in Nederlandse
> > > systemen staat die standaard op ';' Waarmee het probleem van de
> decimalen is
> > > ondervangen in ruil voor een nieuw probleem.
> >
> > Ik heb dit soort problemen al eerder ondervonden en dat is erg
> > vervelend. Je zou verwachten dat CSV een standaardoplossing is, maar uit
> > de praktijk blijkt wel anders.
> >
> > Wanneer ik ervoor koos om CSV-bestanden - om welke reden dan ook - aan
> > te bieden, werd deze door de gebruiker 99 van de 100 keer in Excel
> > geopend. Daarom heb ik maar besloten om voortaan Excel-bestanden te
> > genereren, of kom ik dan soortgelijke problemen tegen ;)
> >
>
> Klinkt interessant, maar hoe genereer je dan excel-bestanden met php?
>
> Marc.
>
>
....oops, dat heb je pas zojuist besloten ;-)
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.544 / Virus Database: 338 - Release Date: 26-11-2003
Maarten Wierda
27/11/03, 09:45
Marc wrote:
<nadelen CSV>
>>Daarom heb ik maar besloten om voortaan Excel-bestanden te
>>genereren, of kom ik dan soortgelijke problemen tegen ;)
>
> Klinkt interessant, maar hoe genereer je dan excel-bestanden met php?
Zoek maar eens op 'excel' op phpclasses.org.
--
Cheers, Maarten Wierda
"Teenage angst has paid off well, now I'm bored and old"
Niels Basjes
27/11/03, 11:00
On Wed, 26 Nov 2003 22:28:04 +0100 the lifeform known as "Marc"
<nono@nono.nono> wrote:
>Om een bestelling toe te voegen aan een bestand, dat ik later bijvoorbeeld
>m.b.v. van excel kan openen gebruik ik:
....
>Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
>seperated value'-bestand te creëren, maar dat valt dus tegen. Als ik het
>bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel. En dat
>is dus niet de bedoeling.
>
>Hoe maak ik het zo dat er een echt csv-bestand van maak, zodat iedere
>variabele echt per cel weergegeven wordt?
Dat komt doordat de gebruikte separator een regio instelling van Windows
is. Dus afhankelijk van jouw lokale instellingen kan het b.v. prima zo
zijn dat de ; gebruikt moet worden i.p.v. de ,
--
Best regards,
Niels.
================================================== =====================
| Drs. ir. Niels Basjes | National Aerospace Laboratory | _ |
| Phone : +31-20-5113381 | Anthony Fokkerweg 2 | / |
| Fax : +31-20-5113210 | 1059 CM Amsterdam |(NLR)|
| E-Mail@NLR : Basjes@NLR,nl | The Netherlands | _/ |
| E-Mail@Home : Niels@Basjes,nl | http://www.nlr.nl | |
================================================== =====================
Spam block : Replace the , with a .
Branko Collin
27/11/03, 16:45
Maarten Wierda wrote:
> Wanneer ik ervoor koos om CSV-bestanden - om welke reden dan ook - aan
> te bieden, werd deze door de gebruiker 99 van de 100 keer in Excel
> geopend. Daarom heb ik maar besloten om voortaan Excel-bestanden te
> genereren, of kom ik dan soortgelijke problemen tegen ;)
Excel leest ook nog wel andere bestandsformaten in dan alleen zijn eigen.
D'r zal vast iets tussen zitten wat goed gedocumenteerd en makkelijk te
schrijven is. Zo herkent Excel 2000 bijvoorbeeld:
<table border=1>
<tr>
<th>Naam</th>
<th>Adres</th>
<th>Woonplaats</th>
</tr>
<tr>
<td>Pietje Puk</td>
<td>Bakkertje Deeglaan 2a</td>
<td>Droomstede</td>
</tr>
<tr>
<td>Pluk</td>
<td>Petteflet 374</td>
<td>Schmidtdorp</td>
</tr>
</table>
Michiel de Roo
27/11/03, 21:00
Marc wrote:
>
> Klinkt interessant, maar hoe genereer je dan excel-bestanden met php?
>
Ik heb zelf geen Excel, maar heb me weleens laten vertellen dat je zon csv
bestandje gewoon xls moet noemen, en dan doet ie het plots wel goed.
Ik heb het nooit geprobeerd, maar wellicht werkt het inderdaad.
Michiel.
Maarten Wierda
27/11/03, 23:45
Michiel de Roo wrote:
> Ik heb zelf geen Excel, maar heb me weleens laten vertellen dat je zon
> csv bestandje gewoon xls moet noemen, en dan doet ie het plots wel goed.
Lijkt me heel stug, bovendien is dit geen oplossing van het probleem.
--
Cheers, Maarten Wierda
cp: Frank Black and the Catholics - Everything Is New
"Teenage angst has paid off well, now I'm bored and old"
Nico Coesel
29/11/03, 00:45
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> wrote:
>Marc <nono@nono.nono> wrote:
>> fwrite($opvoer,"$time,$naam,$straat,$huisnummer,$postcode,$plaats, $email,$aa
>> ntal,$prijs,$totaal,\r\n");
>>
>>
>> Naief als ik ben dacht ik met het gebruik van komma's meteen een 'comma
>> seperated value'-bestand te cre?ren, maar dat valt dus tegen. Als ik het
>> bestand bijvoorbeeld open in excel zet ie de gehele regel in een cel. En dat
>> is dus niet de bedoeling.
>
>IMHo staat CSV voor Character Seperated Values. Je methode is dus
>volledig juist en je dient het programma waarmee je deze regels wilt
>inlezen op de hoogte te stellen van het feit dat je ',' als seperator
>gebruikt.
Hiermee moet je soms nog oppassen: In windows kun je een andere
separator instellen. Als je dan een CSV bestand probeert in te lezen
in een programma dat een komma verwacht, dan zal dat niet gaan. Idem
voor het wegschrijven van CSV bestanden.
--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl