CSV (Comma separated values) ali izvoz iz Excela

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?

Iskanje v phpBB3 forumu znotraj [code] oznake ne deluje!

Prenovljen forum spletišča Matjazev.NET me vsak dan preseneča. Včeraj sem se ubadal s poslovenjenimi gumbi, danes pa z iskanjem po forumu.

Eden izmed najbolj aktivnih uporabnikov
foruma (hvala!), je ugotovil, da neke tematike, za katero se spomni, da je v forumu bila, ne najde! Ker sem iskan makro res napisal jaz, je tudi mene čudilo, da forum tematike ne najde.

Zagnal sem star forum (verzije phpBB2) in videl, da star forum, glede na ključne besede, najde mnogo več tematik kot nov forum. No, resnici na ljubo tudi v starem forumu originalno iskane tematike ni, saj je bila v prastarem forumu, ki smo ga izgubili v »požaru«…

Dobro, da se vrnem k iskanju. Hitro sem ugotovil, da nov forum (različica phpBB3) ne išče znotraj programske kode, torej znotraj oznake . Zakaj so to izključili ne vem in se mi ni zdelo smiselno, zato sem iskal rešitev. Kot marsikdaj prej, tudi danes rešitve na internetu nisem našel.

Še bolj zanimivo se mi je zdelo, da nikjer v nastavitvah ni nobene opcije, s katero bi indeksiranje po oznakah omogočil. Tako kot včeraj, mi ni preostalo drugega, kot da se zakopljem v programsko kodo phpBB3 foruma, kjer sem našel sledeče:

(datoteka fulltext_native.php, vrstica 1044)

// Do not index code
$match[] = '#\[code(?:=.*?)?(\:?[0-9a-z]{5,})\].*?\[\/code(\:?[0-9a-z]{5,})\]#is';

Omenjeno vrstico sem zakomentiral, ponovno ustvaril iskalni indeks in naš forum išče tudi po programski kodi. 🙂

Problem: phpbb3 doesn't search in tags

Here is an easy solution in English, for international web surfers and web masters. The problem is, that phpBB3 forum doesn’t search inside tags, which is unacceptable for programming oriented forums. The solution is quite simple, but you have to edit phpBB3 source code.

Just open fulltext_native.php file (./includes/search/ fulltext_native.php) and comment out one single line of code in line #1044:

// $match[] = '#\[code(?:=.*?)?(\:?[0-9a-z]{5,})\].*?\[\/code(\:?[0-9a-z]{5,})\]#is';

After that you will have to recreate a search index and that is all. Your phpBB3 forum will search inside tags. 🙂

phpBB3 in slovenščina

Danes sem se ubadal s problemom, na katerega je zagotovo naletel marsikateri spletni mojster, a nihče ni napisal recepta za rešitev. Ker mi je stvar vzela veliko časa jo bom opisal in se siceršnji tematiki (MS Pisarna 2010) vrnil naslednjič.

Problem se je pojavil pri lokalizaciji phpBB3 foruma. Bralci Matjazev.NET-a veste, da sem te dni nadgradil forum in da sem prešel na verzijo phpBB3. Dobro, to je znano okolje in uporabniki so se potrudili, ter ga poslovenili. Vzel sem torej slovensko lokalizacijo in uredil vse potrebno.

Danes pa sem odgovarjal ne enega izmed vprašanj, ter naletel na problem, da nisem našel gumba za citiranje. Malo čudno, da bi tako pomembna akcija preprosto izginila iz foruma… Po iskanju na spletu sem našel nekaj tematik, ki so opisovale izgubo omenjene funkcionalnosti ob lokalizaciji foruma. Ok, kriva je torej naša lokalizacija.

Iskal sem še dalje in našel rešitev. V mapi /styles/prosilver/imageset manjka mapa s slovenskimi gumbi. Ok, rekel sem si, da bom gumbe pač pripravil, ko bom imel čas, a kmalu sem ugotovil, da je forum poln napak, saj ob vsakem dostopu zapiše napako, da mu manjkajo gumbi.

Ker napak in opozoril ne maram, sem situacijo rešil preprosto tako, da sem v omenjeno mapo prekopiral angleške gumbe in stvar je delovala BP, napak ni bilo več, v forumu pa so se pojavili gumbi za citiranje, urejanje… A kaj, ko niso bili v pravem jeziku 🙁.

Gre za 10 gumbov in odločim se, da jih bom poslovenil. S pomočjo Paint.NET programa sem stvar dokaj hitro uredil in imel sem slovenske gumbe, ki pa so bili malce večji od originalov. Nekatere gumbe sem namreč moral povečati zato, ker imamo Slovenci daljše besede, kot Angleži.

In tu se začne moja današnja kalvarija, ki mi je vzela kakšne tri ure časa in upam, da bo ta zapis pripomogel k temu, da ga ne bo po nepotrebnem izgubljal še kdo drug.

Torej lepo po vrsti:

  1. Ko sem na strežnik dal slovenske gumbe so bili slednji v forumu odrezani na širino originalov.
  2. Prebrskal sem izvorno kodo strani in ugotovil, da je širina določena preko CSS-a.
  3. Najdem ustrezen CSS (/styles/prosilver/theme/buttons.css), a tam notri ni zapisana širina gumbov, temveč so zapisane konstante.
  4. Po vsej izvorni kodi iščem definicijo omenjenih konstant, a jih ne najdem – konstante preprosto niso nikjer definirane???
  5. Iščem malo naokoli in najdem datoteko (/styles/prosilver/imageset/sl/imageset.cfg), torej neko nastavitveno datoteko, ki sem jo prekopiral iz angleške verzije. Super!
  6. V omenjeni datoteki so zapisane širine gumbov, jih popravim, a gumbi na forumu so še vedno odrezani.
  7. Da se ne ubadam predlogo, popravim iste stvari še v originalni, torej angleški, različici. Toda brez uspeha! Gumbi so še vedno odrezani.
  8. Ker je forum tako ali tako moj, si mislim, da ne potrebujem nobenih konstant, temveč bom popravil direktno CSS datoteko in stvar mora delovati. Popravim torej datoteko /styles/prosilver/theme/buttons.css. Hm, gumbi so še vedno odrezani.
  9. Preverim, kaj mi vrača strežnik. Strežnik vztrajno vrača napačne širine gumbov!
  10. V tem trenutku pa mi ni bilo nič več jasno. Obsodil sem predpomnilnik in si lagal, da strežnik vrača predpomnjeno CSS datoteko. Pobrišem vse predpomnilnike na katere sem se spomnil a brez uspeha.
  11. Poskusim direktno zahtevati CSS datoteko in dobim pravo datoteko. Poskusim isto preko foruma in dobim napačno.
  12. Torej ni mi preostalo drugega, kot da pogledam izvorno kodo foruma… in tam sem našel, packa… Širine bere iz baze.
  13. Popravim bazo in vse je OK.

Problem je torej v tem, da phpBB samo prvič prebere CFG datoteko in si podatke zapiše v tabelo styles_imageset_data, potem dalje jih vedno bere od tam.

Če želite omenjene gumbe, mi pošljite e-pošto in vam jih bom poslal!

No, ko smo ravno pri lokalizaciji. Tudi z blogom, ki ga pravkar berete ni šlo vse tako kot bi moralo, saj ravno primarna tema ni lokalizirana :)! … A o tem kdaj drugič.

Instalacija Pisarne 2010

Pisarna 2010 obstaja tako v 32bitni, kot tudi v 64bitni različici. Seveda sem si želel na moja 64bitna Okna 7 postaviti 64različico, a glej ga zlomka. Naletel sem na majhno prepreko.

Zanimivost 1: Na 64 bitnih Oknih ne moreta hkrati teči 64bitna Pisarna 2010 in 32bitna Pisarna 2007.

Ker verzijo 2007 krvavo potrebujem (tudi zato, da vam lahko pomagam ob problemih) si torej nisem mogel privoščiti deinstalacije in tako imam sedaj na računalniku 32biti različici 2007 in 2010. Vse teče OK, le Word včasih misli, da se je prvič zagnal. Nisem še uspel ugotoviti od kot mu te ideje

Sicer pa bi ob instalaciji, ki poteka hitro in brez zapletov, opozoril še na eno zanimivost:

Zanimivost 2: Ob instalaciji se moramo odločiti ali bo Pisarna naše podatke na disk zapisovala v MS formatu ali pa v Odprtem formatu, ki ga razumejo tudi nekateri drugi programi.

Ideja odprtega formata je v tem, da si lahko tako zapisane datoteke izmenjujemo tudi z ljudmi, ki nimajo MS opreme, temveč kakšno drugo, saj ta standard podpira. Kaveljc pa je v tem, da je MS zapis boj zmogljiv in laže prilagodljiv, saj ob spremembah ni potrebno čakati na odobritev mednarodne organizacije.

Ker lahko, neglede na odločitev ob instalaciji vsako datoteko posnamemo tudi v drugem formatu sem si seveda izbral MS-ov format in bom datoteke snemal v OpenDocument formatu samo takrat, ko bo to tudi zares potrebno.

MS Pisarna 2010

Kot majhen partner Microsofta, sem dobil licenco za najnovejšega Microsoftovega paradnega konja – Pisarno 2010 (Office 2010). Seveda je še v angleškem jeziku, toda pri MS-u obljubljajo, da bomo tudi Slovenci nekje do poletja/jeseni dobili prevedeno verzijo.

Kar se tiče cenovne politike, bi o njej zaenkrat ne razglabljal, vas pa bom v naslednjih dneh popeljal skozi nekatere izmed programov ter vam prikazal zanimivejše novosti.

Microsoftov nov slogan/filozofija se glasi »Kjerkoli. Kadarkoli.« in okoli njega je izgradil oz. trži tudi novo Pisarno s katero nas poskuša prepričati, da lahko delamo kjerkoli in kadarkoli. S tem namenom prihaja najnovejša pisarna:

  • v obliki samostojnih programov na računalniku,
  • v obliki mobilne pisarne za majhne naprave in pametne telefone ter
  • v obliki Pisarne v Oblaku, s čimer lahko prihajamo do naših dokumentov tudi s spletnim brkljalnikom.

Seveda nam je vsem jasno, da v zadnjih dveh opcijah ni na voljo celotne palete a nekaj je le…

Na predstavitvi sem se najbolj nasmihal osnovni ideji nove Pisarne in to je ‘produktivnost’. Analitiki (kdo pa drug!) so namreč ugotovili, da se v ZDA skozi leto porazgubi kar 900 milijard dolarjev zaradi slabe produktivnosti obstoječih pisarniških programov. Prav zanima me, kje dobijo takšne številke in kako jih opravičijo. Dajmo dojeti, da ljudje ne naredimo več če lahko nekaj naredimo hitreje!

Druga ideja pa je mnogo bolj zanimiva in vsekakor opravičljiva – ugotovili so namreč da vseveč ljudi vseveč časa preživi na razih socialnih mrežah in da želijo (želimo) imeti tudi ob oddaljenem dostopu določena orodja za lažje/hitrejše delo.