Posts Tagged ‘csv’

CSV (Comma separated values) ali izvoz iz Excela

Ponedeljek, Junij 7th, 2010

Danes sem bil spet priča zanimivemu »problemu«, ko se je name obrnila obupana uporabnica, češ, da ji Excel napačno prikazuje cenik. 🙂 Da bi tale zapis ne bil predolg, bom preskočil zamudni del dokaj zanimivega pogovora, ki pa me je na koncu pripeljal do srčike problema.

Problem je bil, kot že velikokrat v življenju povsem banalen in povsem drugje, kot pa tam, kjer ga je uporabnica najprej iskala. No začeli smo s tem, da izvoz v Excelu 2007 deluje, v Excelu 2003 pa ne… Aha; in potem svizec zavije čokolado z lešniki.

Kaj je CSV?

CSV je kratica, ki v slovenščini pomeni ‘podatki ločeni z vejico’ in torej predstavlja navadno tekstovno datoteko, v kateri se v vsaki vrstici nahaja poljubno mnogo podatkov, ki so pač medsebojno ločeni z vejico. Torej:

Ime;priimek;starost
Franc;Jožef;67
Marija;Novak Štefančič;30

Ko takšno datoteko preberemo z Excelom, slednji pač posamezno vrstico datoteke prebere v posamezno vrstico tabele, podatke v vrstici (ločene z vejico) pa prebere v posamezne celice v vrsticah. Glede na gornji primer torej dobimo sledeče:

CSV v Sloveniji

Če ste podrobno brali ste lahko opazili zelo pomembno nedoslednost. Najprej sem namreč trdil, da CSV predstavlja podatke ločene z vejico, v mojem primeru pa so podatki ločeni s podpičjem.

S tem torej pridemo do prvega resnega problema CSV datotek oz. bolj natančno, problema CSV datotek in Excela. Čeravno kratica CSV pomeni ‘ločeno z vejico’, slednje, kot vidite, ni nujno tako.

DEJSTVO 1: Excel izvaža/uvaža podatke v CSV datoteko ločene z ločilom, ki je v sistemu nastavljeno kot ločilo seznama (z drugimi besedami, tisto ločilo, ki ga uporabljate kot ločilo parametrov v Excelovih funkcijah).

Gornje dejstvo pač pomeni, da Excel s slovenskimi nastavitvami CSV naredi tako, da ga loči s podpičjem (saj tudi parametre funkcij ločimo s podpičji), Excel z angleškimi nastavitvami, pa CSV datoteko resnično loči z vejico. Seveda pa lahko obstaja tudi država, kjer posamezne elemente ločijo z dvopičjem in v tem primeru bi njihova CSV datoteka bila ločena pač s dvopičjem.

DEJSTVO 2: CSV datoteke med različnimi nastavitvami Oken niso nujno direktno prenosljive (to je pravzaprav neposredna posledica prvega dejstva).

Tudi to dejstvo lahko hitro preizkusite tako, da naredite tekstovno datoteko, kjer posamezne elemente ločite z vejico. Datoteki daste končnico CVS in jo odprete z Excelom. Excel bo vse podatke uvozil v eno kolono, saj med njimi ne najde podpičja, zatorej sklepa, da gre za en sam podatek.

POMEMBNO: Seveda pa lahko tudi takšno datoteko preprosto (pravilno!) preberete v Excel tako, da jo najprej odprete in nato z orodjem ‘Besedilo v stolpce’ preberete v posamezne stolpce.

CSV in podatkovne tipi

DEJSTVO 3: Excel se ob branju CSV datoteke ne zaveda kakšnega tipa so podatki, ki jih bere. To pomeni, da če nekaj izgleda kot število, bo to prebral kot število.

Dobro, pri uvozu podatkov nam je to dokaj jasno, kaj pa pri izvozu; kaj se zgodi, ko podatke v Excelu posnamemo kot CSV datoteko? No tu pa pridemo do problema, ki ga je danes imela uporabnica.

DEJSTVO 4: Številčne podatke bo Excel poskušal v CSV datoteko zapisati tako, kot jih vi vidite na ekranu.

Če torej vi pred shranjevanjem v Excelu določite naj slednji števila prikazuje s štirimi decimalkami bo tudi v CSV datoteko zapisal natanko 4 decimalke. Če pa mu zaukažete naj prikazuje števila z dvema decimalkama, pa bo tudi CSV datoteka imela vsa števila z dvema decimalkama.

In to naj bo tudi nauk, ki sem vam ga želel posredovati z današnjim zapisom. O CSV datotekah si zapomnite sledeče:

  1. To so navadne tekstovne datoteke, ki jih lahko odprete, gledate in popravljate tudi v notepadu.
  2. Excel pričakuje, da so v CSV datoteki posamezni podatki ločeni z ločilom, ki je v sistemu določeno kot ločilo seznama.
  3. Pri shranjevanju Excelove datoteke, kot CSV datoteke, se shrani samo trenutni list (vsi ostali listi so nepovratno izgubljeni).
  4. Številke v CSV datoteki bodo zapisane tako, kot jih vi vidite na ekranu.


Čisto za konec pa še majhna zanka, ki pa jo lahko hitro preizkusite in pridete do rešitve… Kaj pa Excel naredi, ko se med podatki pojavi ločilo? Kaj torej Excel naredi če se v celici pred izvozom v CSV nahaja podpičje?