Curiozități și probleme cu CSV

nu inteleg de unde ai dedus ca plec de la premisa aia.

Pentru că ai spus că dacă generezi tu CSV-ul poți să-i spui ce delimitator să folosească, lucru care nu ajută la nimic dacă nu toți utilizatorii au setate regionalele din OS la fel.

Ca si @anon31094663 avem un parser configurabil de csv-uri.
pot sa ii specific printr-un json de configurate ce separator are fisierul, ce ma intereseaza da iau din fisier, timezone-ul datelor, sa sara primele n randuri etc.

poti specifica in csv ce fel de delimitator e folosit si nu mai conteaza ce setari regionale ai.
nu mai stiu exact, parca era sep=ce_vrei_tu in prima linie a csv-ului.

ps: n-am mai facut demult asta, parca tin minte ca functiona doar cu ms office.

Gata, înțeleg despre ce vorbești, dar chestia aia e un hack, că la primul save al fișierului Office-ul o să șteargă rândul tău și o să salveze cu delimiter-ul default.

Mai mult decât atât, dacă acel CSV este exportat în ideea că datele vor fi deschise în Excel, practic utilizând CSV-ul nu faceți altceva decât să obligați utilizatorul să mai facă o copie a fișierului salvându-l ca .XLSX - în CSV nu se rețin formatări, formule și alte chestii d-astea specifice Excel-ului.

Ce vreau să spun este destul de simplu: dacă vorbim de exporturi pentru utilizatori, încetați să mai folosiți CSV-ul, nu are absolut niciun avantaj în afară de faptul că pare mai simplu de implementat, deci un dev mai leneș va merge fix pe varianta asta (librăriile moderne de X to Excel ar trebui să facă treaba la fel de simplă dpmdvd).

pt Java folosesc Apache POI. Isi face treaba pentru ce avem nevoie. Avem rapoarte care au si grafice prin ele.

Am avut tot felul de probleme cu csv dar cea mai nasoala a fost o combinatie de utf-8 si caractere chinezesti. Alte probleme intalnite: new line in interiorul celulelor, caracterul separator folosit in celule fara escape, celule care trebuiau sa fie “enclosed” si nu erau pentru ca s-a presupus ca sunt “integer” si au existat si valori string. Peste toate, pe cat de simplu pare,am intalnit biblioteci de functii care pare ca merg numai pe OS-ul pentru care au fost scrise. Si sa nu mai aud de excel ca baza de date.

3 Likes

Ce probleme au cauzat caracterele chinezesti in utf-8?

Ceva pe ruta “mb_detect_encoding” cu conversie din codarea X in utf-8, trecand prin mysql care are si el “collation”. Nu i-am dat de cap sa mearga 100%, asa ca am eliminat datele inconsistente.

Ah, deci erau caractere chinezesti in alt format, inainte sa le transformi in utf-8.

Problema nu e neaparat pe export, e mai degraba pe import. In locul fisierelor csv, care e varianta alternativa preferata ?

Dacă vrei să imporți niște date manipulate de utilizatori, atunci Excel.