Soubor CSV: oddělovače, kódování a časté chyby importu

Soubor CSV je prostý text, ve kterém každý řádek představuje jeden záznam a hodnoty jsou odděleny smluveným znakem. Formát sám neříká, jaký oddělovač a jaké kódování znaků byly použity, ani který sloupec je číslo a který text. Tabulkový procesor to při otevření odhaduje – a většina potíží s rozsypanou diakritikou, daty slepenými v jednom sloupci nebo zmizelými nulami vzniká špatným odhadem. Řešením je soubor neotevírat dvojklikem, ale importovat a tyto tři věci nastavit ručně.

Čárka, nebo středník: oddělovač podle místního nastavení

Zkratka CSV znamená hodnoty oddělené čárkou a v anglickém prostředí to doslova platí. Čeština ale čárku používá jako desetinný oddělovač, takže hodnota 12,5 by se v řádku rozpadla na dvě. České nastavení Windows má proto jako oddělovač seznamu středník a Excel se jím řídí při otevírání i ukládání CSV.

Odtud pochází nejběžnější chyba: export z e-shopu nebo skladového systému je oddělený čárkami, český Excel čeká středníky a celý řádek skončí ve sloupci A. Obráceně soubor uložený v českém Excelu se středníky nenačte systém, který čeká čárky. S oddělovačem cestuje i druhý problém, totiž desetinný znak. Číslo 12.5 s tečkou český Excel jako číslo nepozná a nechá ho jako text, nebo z něj udělá datum.

Vedle čárky a středníku se používá i tabulátor, méně často svislá čára. Když si lze při exportu vybrat, zvolil bych tabulátor nebo středník, protože se v názvech produktů a adresách vyskytují mnohem řidčeji než čárka.

Uvozovky kolem textu a oddělovač uvnitř hodnoty

Hodnota, ve které se oddělovač vyskytuje, se uzavírá do rovných dvojitých uvozovek. Název produktu „Hrnek, modrý“ je tak v souboru zapsaný v uvozovkách a čárka uvnitř se nepočítá jako hranice sloupce. Stejně se ošetřuje konec řádku uvnitř hodnoty, typicky u víceřádkové poznámky k objednávce. Pokud text obsahuje uvozovku, zapisuje se zdvojeně. Takto to popisuje dokument RFC 4180, který je nejbližší obdobou normy pro CSV, i když ho ne každý program dodržuje do písmene.

Potíž nastává u exportů, které uvozovky nepoužívají vůbec. Jediná čárka v adrese zákazníka pak posune zbytek řádku o sloupec doprava. Pozná se to podle toho, že některé řádky mají o jednu hodnotu víc než záhlaví. Ruční oprava ve stovkách řádků je nespolehlivá, podle mě je lepší vrátit se ke zdroji a exportovat znovu s jiným oddělovačem.

UTF-8, Windows-1250 a rozsypaná diakritika

Písmena bez diakritiky se ve všech běžných kódováních ukládají stejně, proto je na anglickém textu problém neviditelný. České znaky se liší. Windows-1250, starší středoevropské kódování, ukládá ř jako jeden bajt. UTF-8, dnes převládající, ho ukládá jako dva bajty. Přečte-li program soubor v UTF-8 jako Windows-1250, zobrazí místo ř dvojici Ĺ™ a místo č dvojici ÄŤ. Opačná záměna dá na místě háčků a čárek otazníky nebo náhradní znak.

Aby program kódování nemusel hádat, může soubor v UTF-8 začínat třemi bajty zvanými BOM. Excel podle nich UTF-8 rozpozná a diakritiku zobrazí správně i při otevření dvojklikem; bez nich starší verze sahají po místním kódování Windows. Při ukládání se proto v Excelu vyplatí vybrat formát CSV UTF-8 místo obyčejného CSV.

BOM má i odvrácenou stranu. Některé programy a skripty ho neočekávají a považují ho za součást názvu prvního sloupce, takže sloupec „kod“ nenajdou, ačkoli v souboru zjevně je. Než soubor pošlete do jiného systému, doporučil bych zeptat se jeho správce na tři údaje: oddělovač, kódování a zda má být BOM přítomen.

Úvodní nuly a kódy, ze kterých se stane datum

Při otevření dvojklikem převede Excel všechno, co vypadá jako číslo, na číslo. Kód produktu 00123 se změní na 123 a telefonní číslo přijde o úvodní nulu. Dlouhé číselné kódy dopadnou hůř: Excel uchovává patnáct platných číslic, další nahradí nulami a hodnotu zobrazí v exponenciálním tvaru. Čárový kód nebo číslo zásilky tak může být poškozeno nevratně, jakmile soubor uložíte.

Podobně se chovají hodnoty připomínající datum. Označení regálu 3-4 nebo verze 1.5 se v českém prostředí změní na datum a původní text už v buňce není. Změna formátu buňky zpět na text nepomůže, protože uvnitř zůstane pořadové číslo dne.

Obrana je jediná: určit sloupci typ Text dřív, než se data načtou. Sám bych jako text načítal každý sloupec, se kterým se nepočítá – kódy, čísla objednávek, telefony, směrovací čísla. Vyplatí se to i později, protože kód uložený na jednom listu jako text a na druhém jako číslo je častou příčinou toho, že funkce SVYHLEDAT hodnotu nenajde.

Import přes průvodce a Power Query místo dvojkliku

V Excelu vede cesta přes kartu Data a příkaz Z textu/CSV. Otevře se náhled, ve kterém lze změnit původ souboru, tedy kódování, a oddělovač, a hned je vidět, zda se diakritika a sloupce zobrazují správně. Tlačítko Transformovat data pak otevře editor Power Query, kde se u každého sloupce nastaví datový typ. Import se uloží jako dotaz, takže po dodání nové verze souboru stačí zvolit Aktualizovat a všechny kroky proběhnou znovu.

LibreOffice Calc zobrazí dialog pro import textu při každém otevření CSV a nabídne v něm znakovou sadu, oddělovač i typ jednotlivých sloupců. V Tabulkách Google se soubor načítá příkazem Importovat z nabídky Soubor, kde lze vypnout automatický převod textu na čísla a data.

Za nejužitečnější návyk považuji otevřít neznámý CSV nejdřív v obyčejném textovém editoru. Na prvních pěti řádcích je vidět oddělovač, uvozovky i desetinný znak, a mnoho editorů ukáže i kódování. Původní soubor si přitom nechte nedotčený a pracujte s kopií, ať se máte k čemu vrátit. Teprve načtená a zkontrolovaná data má smysl zařadit do seznamu v tabulkovém procesoru a stavět nad nimi souhrny.

Zdroje

  • RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files, Internet Engineering Task Force (IETF)
  • Import nebo export textových souborů (.txt nebo .csv), Microsoft Support
  • The Unicode Standard a UTF-8, UTF-16, UTF-32 & BOM – často kladené otázky, Unicode Consortium
  • LibreOffice Calc Guide – import textových souborů a CSV, The Document Foundation
  • Import souborů do Tabulek Google, Nápověda Editorů Dokumentů Google
Našli jste v článku chybu?

Publikováno: 17. 07. 2026

Kategorie: Technologie