23. juni 2009 - 10:32Der er
17 kommentarer og 1 løsning
udtage bestemte felter fra en csv fil
Det jeg gerne vil vide noget om er, hvis man har en csv fil med ex. 40 felter og kun skal bruge 4 udaf de 40 kan man lave noget kode "dos" "php" eller andet, der kan fjerne de felter. kan naturlighvis bruge excel eller notepad til at redigere i filen, men en måde at auto fjerne overflødige felter ?
Det kommer da an på, hvad du ellers bruger din csv-fil til. Er det ikke en mulighed at filtrere når du importere csv-filen til den videre anvendelse?
Ellers ville jeg bruge Python. Der skal ikke meget kodning til, og vupti, så har du et script der tager imod din csv-fil, stripper for uønskede felter og skriver en ny fil (eller overskriver den gamle). Når scriptet er skrevet kan det klares med en prompt som: python bulky.csv stripped.csv
Hvis du har php til rådighed, kunne du jo lave en fin lille ordning, hvor du uploader csv-filen og serveren svarer igen ved at lade dig downloade den strippede csv-fil.
Mit problem er fra min mobil laver jeg en csv fil, men den tager alle felter med, ca 56 felter, den fil importere jeg så til bibob pc sms men der kan kun importeres 4 felter, jeg kan godt redigere manuelt hvis det kun er et par tlf men hvis der er mange, er det temmeligt omstændigt.
jo bruger lidt php og mysql på min server, PYTHON kender jeg ikke noget til.
bibob kommer bare og siger der for mange felter og kan ikke importeres, men hvis jeg i notepad sletter alle overflødige felter så der kun er fornavn, efternavn, nummer, gruppe så kan det importeres. jeg kikkede lige på python uh nej not programerings sprog igen hehe ok jeg kikker på dine link takker for nu...
nej dette kan se nu, det er [type] => application/vnd.ms-excel det virkede. okay så langt så godt men nu kommer det svære læse filen og kun udvælge de felter der skal bruges samt give mulighed for at download filen igen.....
$data i eksemplet er en array. Hvis nu du har følgende indhold i csv-filen: "Fornavn";"Efternavn";"Adresse" "Karl";"Carlsberg";"Viby"
Vil $data være for linie 2: $data[0] = "Karl"; $data[1] = "Carlsberg"; $data[2] = "Viby";
Så hvis dine interessante data ligger i det 1., 2., 5. og 10. felt, kan du samle dit output i: $output = Array($data[0], $data[1], $data[4], $data[9]); echo '"'.implode('";"', $output).'"'
for at se hvad sker der egenligt før og efter, det viser sig før når jeg åbner filen i excel står tekst fint, men efter kørsel af ovenstående script hvor jeg kun laver en ny fil og tilføjer 50 til felt2 sker der noget underligt der kommer en masse underligt tekst A der står på hovedet og kina tekst, kan du fortælle mig hvorfor ?
I stedet for implode og fwrite kan du anvende fputcsv. $n++ anvender du heller ikke nogen steder. Har du prøvet at kigge på, om den læser CSV-filen rigtigt i første omgang?
ja det script jeg har testet fra #8 læser fint teksten her så fundet dette setlocale( LC_ALL, "da", "da_DK", "dan", "danish", "da_DK.ISO88591" ); kan være jeg skal have dette med men hvordan sletter jeg felter eller kolonner ?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.