Czym różni się konwersja XLSX do JSON od zwykłego eksportu do CSV
Większość narzędzi do konwersji arkuszy kalkulacyjnych oferuje eksport do CSV. To format płaski, tekstowy, w którym każda komórka staje się ciągiem znaków oddzielonym przecinkiem lub średnikiem. JSON jest formatem typowanym: obsługuje liczby, wartości logiczne, obiekty, tablice i null. Różnica nie jest kosmetyczna.
Plik XLSX to spakowany archiwum XML. Zawiera osobne arkusze, definicje typów komórek (tekst, liczba, data, wartość logiczna), formuły oraz bogate formatowanie (kolory, czcionki, scalenia). Podczas konwersji do JSON narzędzie zachowuje typy danych. Liczba 1024 zostanie zapisana jako liczba 1024, a nie jako ciąg "1024". Wartość logiczna PRAWDA z komórki Excela stanie się true w JSON. Komórka daty (np. 2023-03-15) zostanie zapisana jako tekst ISO 8601, ponieważ narzędzie nie oblicza ponownie formuł ani nie przetwarza formatów wyświetlania.
CSV nie ma pojęcia o typach – każda wartość jest tekstem. JSON pozwala zachować strukturę: wiersz z kolumnami nazwanymi (np. imię, wiek, aktywny) zamienia się w obiekt z kluczami odpowiadającymi nagłówkom. Dla programisty API lub aplikacji frontendowej to różnica między parsowaniem "wiek": "25" a "wiek": 25. Typy liczbowe umożliwiają bezpośrednie operacje matematyczne bez konwersji. Typy logiczne upraszczają warunki.
Ta strona wykonuje konwersję całkowicie w przeglądarce. Żaden fragment pliku XLSX nie trafia na serwer. Plik jest przetwarzany lokalnie. Dla użytkowników dbających o prywatność – na przykład analityków danych pracujących z wrażliwymi danymi finansowymi – to istotna cecha. Nie muszą ufać zewnętrznemu serwerowi ani martwić się o przechwycenie pliku podczas transmisji.
Jak działa konwersja: od XLSX do JSON
Plik XLSX jest rozpakowywany w pamięci przeglądarki. Narzędzie odczytuje tylko pierwszy arkusz. Z każdej komórki pobierana jest ostatnia zapisana wartość widoczna. Oznacza to, że jeśli komórka zawiera formułę =A1+B1, to wynik, który był pokazany w momencie ostatniego zapisu pliku, zostanie zapisany jako wartość liczbowa. Nowe obliczenia nie są przeprowadzane. Formuła, jako tekst, nie jest przenoszona do JSON.
Następnie narzędzie konstruuje tablicę obiektów. Pierwszy wiersz arkusza jest traktowany jako nagłówek. Każda nazwa kolumny z nagłówka staje się kluczem w obiekcie. Kolejne wiersze to obiekty z wartościami. Jeśli nagłówek zawiera zduplikowane nazwy, narzędzie nadaje im sufiksy _2, _3. Jeśli pierwszy wiersz nie zawiera żadnych danych, narzędzie zgłosi błąd: „Ten plik nie ma wierszy tabeli”.
Typy komórek są mapowane w następujący sposób:
| Typ komórki Excela | Wartość w JSON |
|---|---|
| Tekst | Ciąg znaków (string) |
| Liczba | Liczba (number) |
| Wartość logiczna (PRAWDA/FAŁSZ) | Boolean (true/false) |
| Data | Ciąg znaków ISO 8601 |
| Puste | Pusty ciąg "" |
| Błąd (#DZIEL/0!, #ADR! itp.) | Ciąg znaków z tekstem błędu |
Mapowanie dat jest problematyczne. Excel przechowuje daty jako liczbę dni od 1 stycznia 1900 roku (z uwzględnieniem błędu z rokiem 1900 jako przestępnym). Standardowy format JSON nie ma wbudowanego typu daty. Dlatego konwersja zapisuje datę jako ciąg znaków ISO 8601, np. "2023-08-15T00:00:00.000Z". Jeśli potrzebujesz daty w innym formacie, musisz dodać logikę po stronie odbiorcy.
Co jest tracone podczas konwersji
Konwersja XLSX do JSON upraszcza strukturę. Tracone są:
- Scalone komórki – scalenie wizualne nie koresponduje z żadną strukturą hierarchiczną w JSON. Komórki poza pierwszą w scalonym bloku stają się pustymi ciągami.
- Formatowanie – kolory, czcionki, obramowania, tła, wyrównanie – wszystko znika.
- Formuły – tylko wyniki formuł (z ostatniego zapisu) są przenoszone.
- Dodatkowe arkusze – narzędzie czyta tylko pierwszy arkusz.
- Komentarze – nie są zapisywane.
- Ukryte wiersze i kolumny – są odczytywane i zapisywane, jeśli zawierają dane. Narzędzie nie sprawdza, czy wiersz/kolumna jest ukryta.
Użytkownicy często zaskakują się, że scalona komórka w nagłówku (np. „Dane osobowe” rozciągnięte na trzy kolumny) powoduje, że tylko pierwsza kolumna otrzymuje tę nazwę, a pozostałe stają się puste. To prowadzi do nieoczekiwanych nazw kolumn w JSON.
Ograniczenia: rozmiar, wiersze, kolumny
Narzędzie nakłada trzy limity:
- Rozmiar pliku – jeśli plik XLSX przekracza 8 MB, wyświetlany jest błąd: „Ten plik jest za duży. Użyj pliku poniżej ‹max›.”.
- Liczba wierszy – jeśli pierwszy arkusz ma więcej niż 10 000 wierszy, pojawia się błąd.
- Liczba kolumn – jeśli arkusz ma więcej niż 200 kolumn, pojawia się błąd.
Limity te wynikają z wydajności przetwarzania w przeglądarce. Bardzo duże pliki mogą przeciążyć pamięć. Konwersja trwająca dłużej niż około 12 sekund jest zatrzymywana z komunikatem „Ta konwersja trwa zbyt długo. Spróbuj mniejszego pliku.”
Przypadki brzegowe i komunikaty błędów
Narzędzie zwraca konkretne komunikaty w sytuacjach niestandardowych:
| Sytuacja | Komunikat |
|---|---|
| Plik nie jest XLSX (ani CSV, JSON) | „Wybierz plik CSV, JSON lub XLSX.” |
| Plik jest uszkodzony lub nie można go przetworzyć | „Nie można otworzyć tego pliku Excela.” |
| Pierwszy arkusz jest pusty | „Ten plik nie ma wierszy tabeli.” |
| Inny błąd konwersji | „Nie można przekonwertować tego pliku.” |
| Użytkownik anuluje konwersję | „Konwersja anulowana.” |
| Przetwarzanie trwa zbyt długo | „Ta konwersja trwa zbyt długo. Spróbuj mniejszego pliku.” |
| Plik jest za duży | „Ten plik jest za duży. Użyj pliku poniżej ‹max›.” |
Jeśli arkusz zawiera puste wiersze na początku, narzędzie może pominąć je i zacząć od pierwszego wypełnionego wiersza. Jeśli nagłówek zawiera puste komórki w środku (np. kolumna A: „Imię”, B: puste, C: „Wiek”), w JSON pojawi się klucz z domyślną nazwą, co może zakłócić dalsze przetwarzanie.
Kto korzysta z tej konwersji i po co
- Webdeveloperzy – otrzymują dane produktów w arkuszu Excela, potrzebują ich w JSON dla API sklepu internetowego. Konwersja zachowuje typy: ceny jako liczby, status dostępności jako wartości logiczne.
- Analitycy danych – kwartalny raport sprzedaży w XLSX muszą przekazać do skryptu Python, który czyta JSON. Unikają parsowania CSV i konwersji typów ręcznie.
- Zespoły współpracujące z partnerami zewnętrznymi – partner preferuje JSON nad Excelem. Potrzebują jednorazowej konwersji bez instalowania oprogramowania.
- Osoby prywatne – nie chcą wysyłać pliku na serwer. Konwersja lokalna daje poczucie bezpieczeństwa.
FAQ (Najczęściej zadawane pytania)
Czy mogę przekonwertować arkusz z formułami? Tak, ale wyniki formuł są pobierane z ostatniego zapisu. Nowe obliczenia nie są wykonywane. Jeśli zmienisz dane źródłowe po zapisie, musisz ponownie otworzyć plik w Excelu, zapisać go i wtedy przekonwertować.
Co się dzieje z datami w JSON?
Daty są zapisywane jako ciągi znaków ISO 8601 (np. "2023-08-15T00:00:00.000Z"). Oryginalna maska formatu Excela jest odrzucana. Jeśli potrzebujesz określonego formatu daty, musisz przetworzyć ciąg ISO.
Dlaczego tylko pierwszy arkusz? Arkusze w XLSX są przechowywane jako osobne strumienie XML. Narzędzie odczytuje tylko pierwszy dla prostoty. Jeśli potrzebujesz innych arkuszy, musisz przenieść ten arkusz na pierwszą pozycję w Excelu przed przesłaniem.
Czy mogę użyć pliku XLS (stary format)? Nie, narzędzie akceptuje tylko XLSX. Format XLS (binarny) wymaga innego parsera. Możesz skonwertować plik XLS do XLSX za pomocą Excela lub Arkuszy Google przed wgraniem tutaj.
Czy JSON ma zachowane puste komórki?
Tak, pusta komórka staje się pustym ciągiem "" w JSON. Jeśli chcesz je pominąć, musisz dodać logikę po stronie odbiorcy.
Jakie są ograniczenia rozmiaru? Plik nie może przekraczać 8 MB. Arkusz nie może mieć więcej niż 10 000 wierszy i 200 kolumn.