Databáze (DB) zboží pro e-shop se často spravuje v Excelu a dále se exportuje do e-shopu pomocí konverze do souboru CSV. Je to textový soubor, kde jsou pole odděleny oddělovačem, nejčastěji středníkem, každý záznam je na jednom řádku. Kód zboží by měl být text, ale může to být i číslo formátované na text. Při ukládání
DB z Excelu do souboru CSV je vše v pořádku, pokud ale chceme načíst zpět soubor CSV do Excelu, snaží se Excel vše co má číselný charakter převést na číslo. Např. text "14570Xyz13" se načte správně, ale text "1081114001000"se načte jako číslo v exponenciálním tvaru "1,08111E+12" a tím je DB znehodnocena.
POZOR: Při konverzi do CSV jsou problémy s češtinou, ale to je jiná záležitost!
Náprava je dost pracná:
1. změníme příponu CSV na TXT
2. datový soubor otvíráme v Excelu, který spustí průvodce otevřením textového souboru
3. v 2. kroku průvodce musíme nastavit oddělovač jen středník
4. ve 3 kroku průvodce musíme nastavit textový formát pro příslušné pole
5. po načtení ve vhodné datový soubor uložit a pomocný textový soubor odstranit
Proto jsem vytvořil makro OtevritCSV viz sešit OtevritCSV.xls, které vše udělá za nás.
1. pomocí dialogového okna Otevřít vybere CSV soubor
2. změní příponu
3. otevře soubor se správným formátováním
4. uloží jako CSV
5. odstraní pomocný soubor TXT
6. zamezí zobrazování otravných oken "Opravdu uložit, opravdu odstranit..."
Makro je dobře komentované, vytvořil jsem ho záznamníkem a upravil přidáním dialogového okna, přejmenováním souboru, uložením
datového souboru a smazáním již nepotřebného textového souboru. Vlastnost DisplayAlerts brání zobrazování otravných oken.
Chybné načtení manuálně příkazem z menu Soubor/Otevřít, Typ souboru CSV
kod | nazev | ks | cena |
3,33333E+12 | pantofle | 300 | 155 |
ABCDEFxyz123 | backory | 444 | 205 |
14570Xyz13 | sandale | 120 | 680 |
1,08111E+12 | polobotky | 500 | 999 |
1,11111E+12 | strevice | 200 | 899 |
Správné načtení makrem OtevritCSV
kod | nazev | ks | cena |
3333333333333 | pantofle | 300 | 155 |
ABCDEFxyz123 | backory | 444 | 205 |
14570Xyz13 | sandale | 120 | 680 |
1081114001000 | polobotky | 500 | 999 |
1111111111111 | strevice | 200 | 899 |