Dlaczego plik CSV psuje się w programie Excel: kodowanie znaków, separatory i wiodące zera
Spis treści
1. Dlaczego format CSV sprawia tyle problemów w Microsoft Excel?
Format CSV (Comma-Separated Values) jest najprostszym i najpopularniejszym standardem eksportu baz danych i raportów e-commerce. Choć w teorii jest to zwykły plik tekstowy, podwójne kliknięcie i otwarcie go w programie Microsoft Excel często kończy się katastrofą: polskie znaki diakrytyczne (ą, ę, ś, ć, ż, ź) zamieniają się w niezrozumiałe krzaczki (tzw. mojibake), cały wiersz trafia do jednej kolumny, a numery kont, kody pocztowe i PESEL tracą wiodące zera.
Przyczyną tych anomalii są historyczne założenia architektury programu Excel oraz różnice w regionalnych ustawieniach systemów operacyjnych.
2. Trzy główne pułapki techniczne
-
Brak znacznika UTF-8 BOM (Byte Order Mark):
Domyślnie program Excel w wersjach dla systemu Windows otwiera pliki
.csvprzy użyciu starszego kodowania regionalnego (w Polsce zazwyczaj Windows-1250 lub ISO-8859-2), ignorując fakt, że plik został zapisany w nowoczesnym UTF-8. Rozwiązaniem jest poprzedzenie pliku 3-bajtowym znacznikiem UTF-8 BOM (bajty0xEF, 0xBB, 0xBF), który jednoznacznie wymusza na Excelu interpretację UTF-8. -
Separator regionalny: Przecinek vs. Średnik:
W krajach anglosaskich separatorem dziesiętnym jest kropka (
.), a separatorem pól w CSV jest przecinek (,). Jednak w Polsce i większości krajów Europy separatorem dziesiętnym w systemie Windows jest przecinek! Z tego powodu europejski Excel oczekuje średnika (;) jako separatora kolumn. Otwarcie pliku ze standardowym przecinkiem sprawia, że Excel nie dzieli tekstu na kolumny. -
Automatyczna konwersja typów i ucinanie wiodących zer:
Excel agresywnie próbuje interpretować każdą kolumnę jako liczbę. Jeśli kolumna zawiera polskie kody pocztowe (np.
00-950jako00950) lub identyfikatory produktów zaczynające się od zera (np.012345), Excel automatycznie obcina zera, zamieniając wartość na12345. Aby temu zapobiec, wartości te muszą być jawnie formatowane jako tekst z użyciem apostrofu lub cudzysłowów.
3. Bezpieczna konwersja danych w GoToolstack
Nasz konwerter JSON ↔ CSV umożliwia precyzyjne sterowanie wszystkimi parametrami generowanego pliku: wybór separatora (przecinek, średnik, tabulator), automatyczne dodawanie nagłówka UTF-8 BOM oraz poprawne ekranowanie cudzysłowów zgodnie ze standardem RFC 4180.